首页 文章

为什么在php中使用imagecreatefromjpeg()函数时会收到“Corrupt JPEG data”消息?

提问于
浏览
1

我使用imagecreatefromjpeg()函数通过上传表单上传图片:

$folder = '../images/';
$image = imagecreatefromjpeg($_FILES['image']['tmp_name']);
$new = imagecreatetruecolor(300, 300);
imagecopyresampled($new, $image, 0, 0, 0, 0, 300, 300, 150, 150);
imagejpeg($new, $folder, 100);

大多数照片上传很好,但有些显示此错误:

警告:imagecreatefromjpeg()[function.imagecreatefromjpeg]:gd-jpeg,libjpeg:可恢复错误:损坏的JPEG数据:标记0xed之前的756个无关字节

它似乎发生在一些但不是全部的'.jpeg'文件中 . 我没有看到'.jpg'文件出现问题,但我无法确定问题是'.jpeg'文件所独有的 . 我注意到如果我将问题文件的扩展名从“.jpeg”更改为“.jpg”,它就可以正常工作了 .

为什么在php中使用imagecreatefromjpeg()函数时会收到“Corrupt JPEG data”消息?

3 回答

  • 7

    我注意到如果我将问题文件的扩展名从“.jpeg”更改为“.jpg”,它就可以正常工作了 .

    你刚刚重命名它,还是重新保存在图形程序中?

    无论如何,您的文件似乎已被破坏 . 看看Bug #39918 imagecreatefromjpeg doesn't work .

    GD确实提供了一种机制,可以更好地容忍破坏的jpeg图像 . 使用error_reporting(E_ALL);而开发会告诉你发生了什么 . GD确实报告了jpeg编解码器中的一些错误 . 某些jpeg错误是可恢复的,就像此图像中的错误一样 . 您可以使用gd.jpeg_ignore_warning:ini_set(“gd.jpeg_ignore_warning”,1)更改jpeg编解码器的行为; $ im = imagecreatefromjpeg(“test.jpeg”); $ im现在包含您的图像 .

  • 0

    这可以通过以下方式解决:ini_set('gd.jpeg_ignore_warning',1);

  • 0

    尝试添加 @imagecreatefromjpeg($img) 而不是 imagecreatefromjpeg($img) .

    这里 @ 是错误抑制器 .

相关问题