【问题标题】:Displaying image with php用php显示图像
【发布时间】:2010-05-03 10:04:02
【问题描述】:

我有一个显示如下图像的脚本:

header("Content-Type: image/{$ext}");

readfile($image->path);

这已经好几个星期了,现在突然停止工作了。响应标头看起来不错(Content-Type: image/jpg),我没有结束 php-tag,并且我没有对可能导致此故障的代码、服务器或 php-setup 进行任何更改。有没有人知道可能出了什么问题?

谢谢!

=======================

更新

虽然您可以下载图像(文件->另存为)并将其保存到计算机,但图像不显示。虽然在本地打开它也不起作用,这让我认为图像已经以某种方式损坏。有人经历过类似的事情吗?我在想也许 som php 错误/警告被注入到流中并破坏了图像。

【问题讨论】:

  • 会发生什么?您是否查看了提供的图像的源代码以查看是否有任何错误消息?
  • 图像的src打印到屏幕上,仅此而已。 apache 日志中没有错误消息,没有 php 错误消息。如果我将文件的内容转储到屏幕上,我会得到原始图像数据,但是在设置标题和使用 readfile() 时没有任何反应
  • 换个浏览器试试看是否可行
  • 我已经尝试过(safari、firefox、opera、chrome),但没有成功

标签: php image corruption


【解决方案1】:

一个可能的问题来源是 JPEG 图像的 MIME 类型是 image/jpeg,而不是 image/jpg。这是类型与文件扩展名的相当常见的 3 字符版本不一致的情况。

【讨论】:

  • 试过了,但没有骰子。我对 image/png 有同样的问题,所以这似乎不是问题。
【解决方案2】:

一些想法:

  • 文件太大
  • 导致问题的文件路径

【讨论】:

  • 您是否尝试过硬编码标头和文件路径并查看会发生什么?尝试使用简单名称的小型 jpg 文件,例如 image.jpg
  • 现在就这样做了,没有运气。这必须与服务器相关,代码没有任何问题,并且现在已经正常工作了 4-5 周。真的很奇怪。
  • 如果您检查响应(在文本编辑器中查看源文件或输出文件),您是否看到任何警告/错误?还是0字节的输出文件?
  • 页面源代码中没有任何内容(“查看 -> 页面源代码”菜单选项已禁用); firebug 显示:huset.dev/images/get/id/5CCCCN" alt="huset.dev/images/get/id/5CCCCN">
  • 您可以“将文件另存为”吗?还是wget?然后查看内容。
【解决方案3】:

JPG 图像的正确内容类型是“内容类型:image/jpeg”。

注意类型的T是小写的。

更新

我不知道它是否有用,但试试这样的:

$info=pathinfo($image->path);
$ext=strtolower($info["extension"]);
if($ext=="jpg") $ext="jpeg";
header("Content-type: image/$ext");
imagejpeg(imagecreatefromjpeg($image->path));

【讨论】:

  • 其实我觉得是大写的T,但是以前小写c和t都可以,但是wither way就不行了
  • 哇,你读过我的代码吗? $info = pathinfo($image->path); $ext = strtolower($info['extension']); $image->ext == 'jpg' ? $image->ext = 'jpeg' : null; header("内容类型:{$image->ext}");读取文件($图像->路径);试过 imagejpeg(imagecreatefromjpeg($image->path)) 但没有用。
猜你喜欢
  • 2012-11-19
  • 2016-01-13
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多