我一直在windows机器上通过imagemagick重新采样图像。绝大多数工作正常,但有一个或两个图像不会加载任何Android设备。我认为这是我的java应用程序代码被破坏但我也可以在Android设备上的Chrome中重现它。
图像在iOS / PC / Mac上正常加载,但不在Android上。它在10Kb的数据中只有320x44像素,并且没有看到任何错误消息,任何人都可以使用imagemagick来解决我可能做过的事情(或者我错过的步骤)吗?
这是JPG的链接
http://gatherhelp.com/tests/corruptjpg/broken.jpg
更新我使用'Charles'拦截来自手机的网络流量并查看此请求,这也表明我确实正在传送一张白色图片作为对此网址的回复机器人。
我在服务器上使用PHP,但不处理JPG文件,只是直接通过文件服务
答案 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)