【问题标题】:Can't create/display php images - GD Image corrupt or truncated无法创建/显示 php 图像 - GD 图像损坏或被截断
【发布时间】:2012-12-21 08:14:34
【问题描述】:

我遇到了问题,我需要一些帮助。 我已经制作了一个使用 GD 库使用 PHP 创建图像的脚本,但问题是当我在 Firefox 上预览它时,它在 Firebug 中显示一个错误:“图像损坏或截断:localhost/my_scripts/images.php”。 注意:这不是 PHP 显示的错误,更像是来自浏览器的错误。

我已经多次检查我的代码的语法,我也尝试过其他 gd 函数,如 imagegif、imagettftext 等,但没有任何效果。这是我的代码:

//$image = @imagecreate(200, 20)or die("Cannot Initialize new GD image stream");
$image = imagecreate(200, 20);
$background = imagecolorallocate($image,0,0,0);
$foreground = imagecolorallocate($image,255,255,255);
imagestring($image,5,5,1,"This is a Test",$foreground);
header("Content-type: image/jpeg");
imagejpeg($image);
imagedestroy($image);

GD 库已启用,我已经在 phpinfo() 中检查过,我还尝试在 Chrome 上预览它,看起来一样。任何想法我可能做错了什么或为什么会发生这种情况?我该如何解决这个错误??

【问题讨论】:

  • 注释掉header调用和imagejpeg,然后访问脚本。您是否看到任何错误或警告?
  • 如果我注释掉标头函数会显示类似以下的奇怪符号:����JFIF��>CREATOR: gd-jpeg v1.0(使用 IJG JPEG v62),默认质量��C $。 ' ",#(7),01444'9=82<.342 br>
  • 这就是为什么你也需要注释掉imagejpeg。浏览器抱怨图像损坏的最常见原因是由于 PHP 警告或图像数据发出的通知。消除标题和图像数据,很可能会出现警告和通知。
  • 那些奇怪的字符是原始图像数据
  • 如果您注释掉 header(),这些字符就会出现。这不是错误,您只需使用标头告诉浏览器此文件将成为图像

标签: php image gd broken-image


【解决方案1】:

我发现了一些关于这个错误的东西,最后我弄清楚了发生了什么,所以这里是问题的解决方案:

确保页面上只有 PHP 代码。没有 HTML,PHP 代码前后没有空格等,它应该发送到浏览器的唯一内容应该是图像数据。如果这仍然不起作用,请确保将 PHP 脚本保存为不包含 UTF BOM 的格式,这应该可以解决它。

【讨论】:

  • 哦,非常感谢你,Lykos。将编码设置为 Unicode(没有签名的 UTF-8)使它对我有用!
【解决方案2】:

我将代码更改为UTF-8 without BOM 并为我工作!谢谢 Lykos。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 2012-01-18
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多