JPG仅在Android中加载

时间:2014-01-13 11:22:04

标签: php android http jpeg charles-proxy

我一直在windows机器上通过imagemagick重新采样图像。绝大多数工作正常,但有一个或两个图像不会加载任何Android设备。我认为这是我的java应用程序代码被破坏但我也可以在Android设备上的Chrome中重现它。

图像在iOS / PC / Mac上正常加载,但不在Android上。它在10Kb的数据中只有320x44像素,并且没有看到任何错误消息,任何人都可以使用imagemagick来解决我可能做过的事情(或者我错过的步骤)吗?

这是JPG的链接

http://gatherhelp.com/tests/corruptjpg/broken.jpg

更新我使用'Charles'拦截来自手机的网络流量并查看此请求,这也表明我确实正在传送一张白色图片作为对此网址的回复机器人。

我在服务器上使用PHP,但不处理JPG文件,只是直接通过文件服务

1 个答案:

答案 0 :(得分:3)

我知道回答你自己的问题是不好的形式,但以防这有助于其他人...... 问题似乎是我转换了一些PSD和其他最初用于打印的文件,并且使用CMYK颜色格式而不是RGB。

为了找到这个,我使用了ImageMagick的Identify命令并做了这个

   Identify -verbose broken.jpg

Image: broken.jpg
  Format: JPEG (Joint Photographic Experts Group JFIF format)
  Class: DirectClass
  Geometry: 256x256+0+0
  Resolution: 250x250
  Print size: 1.024x1.024
  Units: PixelsPerInch
  Type: ColorSeparation
  Endianess: Undefined
  Colorspace: CMYK
  Depth: 8-bit

这表明颜色空间是CMYK,因此对其他破碎图像的快速测试表明它们都有相同的问题。 要将ImageMagick再次转换为救援并使用

   convert broken.jpg -colorspace RGB fixed.jpg

所以看来iOS / PC / Mac都支持具有CMYK的JPEG,但Android似乎不是或者至少不是所有CMYK图像(截至Android 4.2)