PHP - 回声图像为jpg而不是ascii

时间:2014-10-13 08:58:05

标签: php image echo

我试图在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的最新版本)

提前致谢

2 个答案:

答案 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