XCode编译报pngcrush caught libpng error错误但不影响运行

£可爱£侵袭症+ 提交于 2019-12-09 10:16:13

一直以来,我的Xcode项目编译偶尔会出现类似于While reading xx/BackgroundHomeScreen_5.png pngcrush caught libpng error的错误提示(不是警告),但是这个错误并不会影响应用运行,所以也就没管,今天正好有空解决这个问题。

根据网上搜到的资料,说出问题的png文件不是真正的png文件,可能是个jpg文件,实际的文件头信息是不一样的,造成不能识别。

然后我搜了一下Mac里检测图片真正格式的途径,找到了用文件头来检测图片格式的方法:

  1. JPEG/JPG - 文件头标识 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识) - 文件结束标识 (2 bytes): $ff, $d9 (EOI)
  2. TGA - 未压缩的前5字节 00 00 02 00 00 - RLE压缩的前5字节 00 00 10 00 00
  3. PNG - 文件头标识 (8 bytes) 89 50 4E 47 0D 0A 1A 0A
  4. GIF - 文件头标识 (6 bytes) 47 49 46 38 39(37) 61 G I F 8 9 (7) a
  5. BMP - 文件头标识 (2 bytes) 42 4D B M
  6. PCX - 文件头标识 (1 bytes) 0A
  7. TIFF - 文件头标识 (2 bytes) 4D 4D 或 49 49
  8. ICO - 文件头标识 (8 bytes) 00 00 01 00 01 00 20 20
  9. CUR - 文件头标识 (8 bytes) 00 00 02 00 01 00 20 20
  10. IFF - 文件头标识 (4 bytes) 46 4F 52 4D F O R M
  11. ANI - 文件头标识 (4 bytes) 52 49 46 46 R I F F

可以通过UltraEdit来打开图片,16进制查看。然而我发现出现错误提示的png文件并不是jpg文件,文件头是标准的png格式。这能说明png内容有问题吗?也并不是,在Mac下能正常预览这个png图片。

也有网友说可以用PS打开图片然后重新导出为PNG图片。是可以做,不过我考虑到这个png图片刚才格式有点大,就采用了另一种方法:打开tinypng.com,上传图片后再下载被压缩后的图片,一举两得。

替换了图片后,没有发现再报错。也许只是暂时不报错了,以后继续观察。

参考:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!