我从Stackoverflow拾取的一个简单的PHP脚本会生成带有透明背景的PNG,在上面写入一些文本,然后将其直接输出到客户端浏览器:
$font = 25;
$string = 'My Text';
$im = @imagecreatetruecolor(300, 300);
imagesavealpha($im, true);
imagealphablending($im, false);
$white = imagecolorallocatealpha($im, 255, 255, 255, 127);
$red = imagecolorallocate($im, 255, 0, 0);
imagefill($im, 0, 0, $white);
$lime = imagecolorallocate($im, 204, 255, 51);
imagettftext($im, $font, 0, 0, 30, $red, "fonts/tt0588m_.ttf", $string);
header("Content-type: image/png");
imagepng($im);
imagedestroy($im);
范围是获得一项简单的服务,该服务基于通过URL传递给它的参数(例如Google图表)(例如,此QR代码映像)来供您供电。
到目前为止,一切都很好,除了我单击上面代码生成的图像并要保存它,浏览器不将其识别为PNG图像,而是A php脚本(另存为类型选择器仅具有此选项),如Google图表示例所示,其中资源清楚地识别为PNG文件。
如何通过浏览器实现此正确的资源标识?
浏览器将使用URL中的文件名用作"保存为..."对话框中的默认值。您可以 type 当然可以的另一个名称,也可以使用建议的名称(text.php)保存文件,然后将其重命名。
您可以使用内容分配标头"建议"浏览器的文件名。这是一个示例:
header("Content-type: image/png");
header("Content-disposition: inline; filename=mytext.png");
-
inline
建议浏览器应尝试显示图像。将其更改为attachment
,以建议浏览器应显示"保存为..."或类似对话框。 -
filename=
应包含您选择的文件名。