PHP Imagepng 输出未在任何浏览器中显示

Posted

技术标签:

【中文标题】PHP Imagepng 输出未在任何浏览器中显示【英文标题】:PHP Imagepng output does not shown in any browser 【发布时间】: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() 【参考方案1】:

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

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

【讨论】:

双重检查脚本并对其进行测试。工作正常。在我的机器上启用了 PNG 支持。我们将不得不等待 OP 检查他的服务器或图像路径。 我检查了 phpinfo() 和 gd 运行良好。我有 2.4.10 版本。 如何检查文件是否损坏? @OnésiphoreKonanKouamé 和PNG Supportgd 下? @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 文件夹中有相同的图像。

以上是关于PHP Imagepng 输出未在任何浏览器中显示的主要内容,如果未能解决你的问题,请参考以下文章

imagepng或imagejpeg浏览器无显示问题

PHP 输出图像 imagegif imagejpeg 与 imagepng 函数

php 图片流 转 base64

自定义Magento产品PHP copy imagepng无法写入文件夹

php 图片流 转为base64

输出图像