我试图在fopen和fread之后回显一个图像,但它显示为ascii代码而不是图像格式。
我找到了答案:
Fopen function opens JPEG image as text
我在我的代码中实现了header()行,但似乎它尝试以jpg而不是图像打开我当前的php文件。
这是我的代码:
$filename = $n.".jpg";
//echo $n.'.jpg'; prints image_name.jpg
$fp = fopen($filename, "r");
$data = fread($fp, filesize($filename));
header('Content-type: image/jpg'); //without the header line I can print the ascii
echo $data; //I want to print my $data as image format not ascii
fclose($fp);
(我不知道它是否重要,但我使用的是XAMPP和W7的最新版本)
提前致谢
答案 0 :(得分:1)
如果您使用fopen,请尝试
$fp = fopen($filename, "rb");
强制执行二进制模式。我懒惰并使用它:
$filename = $n.".jpg";
header('Content-type: image/jpg'); //without the header line I can print the ascii
echo file_get_contents($filename);
答案 1 :(得分:0)
我想念您为什么要通过脚本输出图像而不是直接提供图像,因为它已经是jpg图像了。
尽管如此,也许您应该尝试而不是回显文件内容,使用fpassthrough输出文件指针上的所有剩余数据
$filename = $n.".jpg";
$fp = fopen($filename, "r");
header('Content-type: image/jpg'); //without the header line I can print the ascii
fpassthru($fp)
fclose($fp);
您也可以直接调用readfile函数http://php.net/manual/en/function.readfile.php,而无需使用fopen