【问题标题】:PHP Imagepng output does not shown in the browserPHP Imagepng 输出未显示在浏览器中
【发布时间】:2013-12-20 22:04:14
【问题描述】:

我昨晚花了我的时间来解决这个问题。

我有一个 php 文件,它应该返回一个带有相关标题的 PNG 图像。相关文件内容基本是。 (标题语句之前没有先前的输出或空格)

header('Content-Type: image/png');

$img = @imagecreatefrompng($path);

imagepng($img);
imagedestroy($img);

但是浏览器(Firefox)说图像有错误,因此无法显示。

如果我将文件保存到另一个地方并使用 FTP 下载它,它就会显示出来。喜欢:

imagepng($img, "/tmp/hedede.png");

如果我删除标题语句并打印出文件内容,它会显示 PNG 标题以及所有其他垃圾数据。如果我在浏览器上将此页面保存为 PNG 文件,浏览器再次不会显示保存的 PNG 文件,但 Irfanview 会显示它。

【问题讨论】:

  • 从 imagecreatefrompng 中删除“@”,您可能会在此处丢失错误。
  • 是的,您可能会收到类似这样的通知:'abc' 不是有效的 PNG 文件
  • 我删除了“@”字符。但是即使error_reporting 设置为(E_ALL),我仍然没有收到任何错误。我还确定输入文件是有效的 PNG,如果我使用浏览器直接调用该文件,我可以显示它。

标签: php gd


【解决方案1】:

请检查您的文件(在路径中)的 MIME 类型,不要通过扩展名来信任文件类型。希望能帮助到你。如果您的文件不是 png 图像,则代码无法正常运行并且不会显示给定的图像。

【讨论】:

  • 我确定输入文件是有效的 PNG,如果我直接使用浏览器调用该文件,我可以显示它。
  • haizz,如果你不检查它的 mime 类型,你不能确定它是否是一个有效的 png。我可以将 abc.gif 文件更改为 abc.png 并在浏览器上查看。
  • 谢谢,但是如果我打印出没有任何标题参数的文件内容,我可以看到以‰PNG 开头的文件内容。这就是为什么我认为它是一个PNG文件。如果我没有以正确的方式检查 mime 类型,请告诉我如何检查。
  • @noway 你能给我你的代码和你的图片吗,我会检查的。 :)
  • @noway 以及您使用的是哪个 php 版本?
【解决方案2】:

这是 GD 库版本问题。

imagepng($resource)

...使用旧版本的 GD Libray。新版本将是:

imagepng($resource,"php://output")

【讨论】:

  • 什么?你是从哪里得到这个的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 2012-08-05
  • 2020-08-02
相关资源
最近更新 更多