PHP:PNG读取文件编码问题

时间:2015-05-15 18:52:49

标签: php encoding png php-gd

我有这个代码将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();
}

1 个答案:

答案 0 :(得分:1)

您可以尝试在回复中添加一些其他标题:

header('Content-Transfer-Encoding: binary');
header('Content-Description: File Transfer');