PHP: PNG 读取文件编码问题
PHP: PNG readfile encoding issue
我有这段代码可以将 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
级别
这不是我的服务器,所以我应该设置什么服务器 check/modify?
解决方法:
我用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();
}
您可以尝试在您的回复中添加一些额外的内容 headers:
header('Content-Transfer-Encoding: binary');
header('Content-Description: File Transfer');
我有这段代码可以将 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
级别
这不是我的服务器,所以我应该设置什么服务器 check/modify?
解决方法:
我用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();
}
您可以尝试在您的回复中添加一些额外的内容 headers:
header('Content-Transfer-Encoding: binary');
header('Content-Description: File Transfer');