我有这个代码将PNG文件输出到浏览器
header('Content-type: image/png');
header("Content-Length: " . filesize($cache_file));
readfile($cache_file);
exit();
文件$cache_file
已保存为
imagepng(self::$image, self::$cache);
浏览器正在显示损坏的图像。当我下载它并用npp打开它时,我发现它是用UTF-8
编码的,所以我将封装更改为ANSI
并在Windows资源管理器中正确显示
可能导致此编码问题的原因是什么?如何在保存或读取文件时修复它?
编辑:当我直接在浏览器上打开PNG时,它会正确显示,这意味着问题出现在readfile
的水平上
这不是我的服务器,所以我应该检查/修改哪个服务器设置?
解决方案:
我使用imagepng
输出图像内容
public static function outputPNG($file)
{
//clear any previous buffer
ob_clean();
ob_end_clean();
header('Content-type: image/png');
//i will be only outputting PNG images
$im = imagecreatefrompng($file);
imagesavealpha($im, true);
imagealphablending($im, true);
imagepng($im);
exit();
}
答案 0 :(得分:1)
您可以尝试在回复中添加一些其他标题:
header('Content-Transfer-Encoding: binary');
header('Content-Description: File Transfer');