Loving Coding & Visual Design

Corrupt JPEG Error: extraneous bytes before marker 0xd9

一个Flash项目,一直以来被一个PHP GD模块的问题所困扰,遭到很多用户投诉,无法通过Flash上传图片。我研究过,发现有些图片在Windows下,Photoshop下都可以看见,但是一通过PHP的GD模块来处理,就出现如下错误(例如这张图片):
imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg, libjpeg: recoverable error: Corrupt JPEG data: 91 extraneous bytes before marker 0xd9

其中91和0xd9会因为图片的不同而不同,例如Corrupt JPEG data: 4 extraneous bytes before marker 0xd9。

寻找解决方法:

  1. 究其原因应该是gd-jpeg, libjpeg有问题,最快的解决办法就是重新编译libjpeg,但是这对使用虚拟主机的网站来说不太靠谱。

  2. 通过PHP分析有问题的图片头,标记0xd9的错误,但是每张图片的错误标记不同,所以不成立。
    具体原因是由于JPG图片头中EOI marker (0xFF 0xD9) 前的自定义数据部分,PHP GD2无法识别.

  3. 由于虚拟主机的限制,这个也不靠谱
    ini_set('gd.jpeg_ignore_warning', 1);
    imagecreatefromjpeg($file);

  4. 替代工具:ImageMagick,但是空间限制,也只有放弃。


目前暂时没有针对PHP自身的解决方案,另外建议不要使用ImageCreateFromString,也会有这个问题,可以用getimagesize。

困扰的是:老板不管这个是否是BUG,他只要完美,而我却没有答案。



下一页


最 近 文 章

  1. 如何做个专业的SEO从业人员 - Sat, 03 Jul 2010 10:22:44 +0000
  2. 电脑No Signal故障 - Sat, 03 Jul 2010 08:44:09 +0000
  3. 关注Google的两个现象 - Thu, 01 Jul 2010 16:20:26 +0000
  4. 点石论坛与云存储 - Tue, 29 Jun 2010 15:18:32 +0000
  5. 我被空间扭了一下腰 - Tue, 29 Jun 2010 10:50:15 +0000
  6. 关于从香港能带几罐奶粉入关 - Mon, 28 Jun 2010 17:15:56 +0000
  7. 关于白帽子SEO咨询服务 - Fri, 25 Jun 2010 17:28:23 +0000
  8. 美味城市-乐山 - Wed, 23 Jun 2010 13:19:16 +0000
  9. Jquery对Select的操作说明 - Wed, 09 Jun 2010 09:30:11 +0000
  10. 关于到香港买奶粉 - Mon, 07 Jun 2010 14:49:28 +0000