【问题标题】:PHP Imagepng output does not shown in any browserPHP Imagepng 输出未在任何浏览器中显示
【发布时间】:2015-01-13 13:32:22
【问题描述】:

我有这个 php 脚本,它应该在浏览器中返回一个 png 图像。

header('Content-Type: image/png');
$img=imagecreatefrompng($myimagepath);
imagepng($img);
imagedestroy($img);

但我的任何浏览器(Firefox、IE 或 Google)都无法显示结果

我想知道如何解决这个问题? 我使用 Wampserver 2.4

谢谢

【问题讨论】:

  • header(...) 之前的输出中不应有任何内容。为避免,请在第一个 header(...) 之前使用 ob_clean()

标签: php html gd


【解决方案1】:

脚本本身似乎没问题。我看到两个可能的问题:

  1. $myimagepath 已损坏或无法访问
  2. PNG 支持 未启用。用phpinfo()查看,应该在gd下。

【讨论】:

  • 双重检查脚本并对其进行测试。工作正常。在我的机器上启用了 PNG 支持。我们将不得不等待 OP 检查他的服务器或图像路径。
  • 我检查了 phpinfo() 和 gd 运行良好。我有 2.4.10 版本。
  • 如何检查文件是否损坏?
  • @OnésiphoreKonanKouamé 和PNG Support 在gd 下?
  • @OnésiphoreKonanKouamé 所以,检查图像路径。硬编码$myimagepath 并在其中放置一个类似google.com/images/srpr/logo11w.png 的URL。静止图像不显示?
【解决方案2】:

我认为以下内容应该适合您:

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

这不依赖于安装gd。

如果这确实有效,则 gd 有问题。

如果这不起作用,则图片有问题。

【讨论】:

  • 我在我的 ftp 文件夹中上传了 google 徽标并现在对其进行测试,我的浏览器会随机显示一个无法读取的符号,例如“PNG IHDRR^�{.U IDATx���k�%�u&�� ż�nu�Q-�R�dK,��nYc
  • 那是您的浏览器将 png 文件解释为 text/html。确保header('Content-Type: image/png') 前面没有斜线。
  • 我现在有一张小图片
  • 我将 $myimagepath 更改为真实图像,现在我有一个像图像一样的小矩形,当我打开浏览器中显示的页面的源代码时。我有这个代码 localhost:8080/myfirstapp"> 正常吗@Marcel
  • 是的,这就是您的图像的样子。也许在某些时候你用gd 弄乱了图像,现在它看起来不再像你期望的那样了。
【解决方案3】:

您的代码看起来不错,但可能有错误。

替换

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

与

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

用于故障排除和在浏览器中刷新页面。

也许有任何错误信息?

【讨论】:

  • 恰恰相反...评论此行将阻止图像显示
  • 是的。浏览器将像文本一样显示页面内容。也许有错误?
  • @NadavS。我们知道这一点,但如果出现错误,图像将损坏并且浏览器无法显示。所以我们想要默认的内容类型,即 text/html 来查看错误。我对此答案有待编辑,以使 Pavel 想说的更清楚。
  • @MarcelBurkhard 你是对的。但这不是最终解决方案。
  • 当我评论 header('content-type: image/png') 时,除了使用 header('content-type: image/png') 和 imagepng($img,"我的图像.png");我的 ftp 文件夹中有相同的图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
  • 2013-01-02
  • 1970-01-01
相关资源
最近更新 更多