我正在使用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数据:756无关紧要 标记0xed之前的字节
似乎发生了一些但不是全部的'.jpeg'文件。我没有看到'.jpg'文件出现问题,但我无法确定该问题是'.jpeg'文件所独有的。我注意到如果我将问题文件的扩展名从“.jpeg”更改为“.jpg”,它就可以正常工作。
为什么在php中使用imagecreatefromjpeg()函数时会出现“Corrupt JPEG data”消息?
答案 0 :(得分:8)
我注意到如果我将问题文件的扩展名从“.jpeg”更改为“.jpg”,它就可以正常工作。
您刚刚重命名,还是在图形程序中重新保存?
无论如何,您的文件似乎已损坏。看看Bug #39918 imagecreatefromjpeg doesn't work。
GD确实提供了一种机制,可以更好地容忍破坏的jpeg图像。
使用error_reporting(E_ALL);而开发会告诉你发生了什么。 GD确实报告了jpeg编解码器中的一些错误。某些jpeg错误是可恢复的,如此图像中的错误。
您可以使用gd.jpeg_ignore_warning更改jpeg编解码器的行为:
ini_set(“gd.jpeg_ignore_warning”,1);
$ im = imagecreatefromjpeg(“test.jpeg”);
$ im现在包含您的图片。
答案 1 :(得分:0)
这可以通过以下方式解决: ini_set('gd.jpeg_ignore_warning',1);
答案 2 :(得分:0)
尝试添加@imagecreatefromjpeg($img)
而不是imagecreatefromjpeg($img)
。
此处@
是错误抑制器。