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

What's so special about this PNG file?

此 PNG file 无法从我的应用上传到 3d 方服务器。它总是报告这个错误:

does multipart has image?

我确定多部分编码是正确的。从我的应用程序上传了数万张图片,没有这个问题。这是第一次。

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

  1. Dropbox iOS 应用程序无法显示图像。
  2. Tweetbot 无法上传。错误信息是 "media type unrecognized".

所以这个PNG文件确实很特殊,很多应用程序和服务器都不能正确处理它。但是我不知道它有什么特别之处,希望比我更了解PNG的人可以提供帮助。谢谢

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

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

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

  • Jongware 的 pngdefry
  • Apple 的 "pngcrush"(但不是真正的 pngcrush
  • 上面引用的 CgBI 维基页面上列出的其他人

这是您文件中的前几个字节:

$ od -c test.png | head -4
0000000 211   P   N   G  \r  \n 032  \n  [=10=]  [=10=]  [=10=] 004   C   g   B   I
0000020   P  [=10=]     002   + 325 263 177  [=10=]  [=10=]  [=10=]  \r   I   H   D   R
0000040  [=10=]  [=10=]  [=10=]   `  [=10=]  [=10=]  [=10=]   `  \b 006  [=10=]  [=10=]  [=10=] 342 230   w
0000060   8  [=10=]  [=10=]  [=10=]       c   H   R   M  [=10=]  [=10=]   z   %  [=10=]  [=10=] 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)
...