这个PNG文件有什么特别之处?

时间:2015-12-26 17:44:47

标签: ios png multipartform-data

此PNG file无法从我的应用程序上传到3d-party服务器。它总是报告此错误:

  

multipart有图像吗?

我确定多部分编码是正确的。我的应用程序上传了数以万计的图像而没有此问题。这是第一次。

我想这个PNG文件有一些特别之处,我证明了这一点:

  1. Dropbox iOS应用无法显示图片。
  2. Tweetbot无法上传。错误消息是“媒体类型无法识别”。
  3. 所以这个PNG文件确实很特别,而且很多应用程序和服务器都没有正确处理它。但是我不知道它有什么特别之处,希望能比我更了解PNG的人能提供帮助。感谢。

1 个答案:

答案 0 :(得分:3)

这是一个CgBI文件,而不是PNG,很可能是用Apple的流氓修改后的pngcrush制作的。

此类文件在字节12-15中始终包含“CgBI”,其中“IHDR”属于。

CgBI文件可以被多个应用程序转换为有效的PNG文件(除了透明区域受到无法修复的损坏),包括

  • Jongware的pngdefry
  • Apple的“pngcrush”(但不是真正的pngcrush
  • 在上面引用的CgBI wiki页面上列出的其他人

以下是文件中的前几个字节:

$ od -c test.png | head -4
0000000 211   P   N   G  \r  \n 032  \n  \0  \0  \0 004   C   g   B   I
0000020   P  \0     002   + 325 263 177  \0  \0  \0  \r   I   H   D   R
0000040  \0  \0  \0   `  \0  \0  \0   `  \b 006  \0  \0  \0 342 230   w
0000060   8  \0  \0  \0       c   H   R   M  \0  \0   z   %  \0  \0 200

这些字节代表以下内容:

PNG signature 0-7
CgBI length 8-11
"CgBI" 12-15
CgBI data 16-19
CgBI CRC 20-23
IHDR length 24-27 (should be in 8-11)
"IHDR" 28-31 (should be in 12-15)
width 32-35 (should be in 16-19)
height 36-39 (should be in 20-23)
bit depth 40 (should be in 24)
color type 41 (should be in 25)
compression 42 (should be in 26)
filter method 43 (should be in 27)
interlace method 44 (should be in 28)
IHDR CRC 45-48 (should be in 29-32)
...