无法从 IPA 读取 PNG

Can't read PNG from IPA

我无法读取从 IPA 中提取的 PNG 文件。

BufferedImage bufferedImage = ImageIO.read(new File("z:\icon.PNG"));

throws: " I/O error reading PNG header".

我可以阅读任何其他 PNG,只要它不是来自 IPA。有什么想法吗?

简短回答:这不是 PNG。这是一个 CgBI 文件,是 Apple 专有的 PNG 扩展。大多数软件无法读取它们,仅仅是因为它们通过在 IHDR 之前插入自定义 CgBI 关键块来破坏 PNG 规范。

有软件(如上面 link 中所见)可以读取它们并将其转换为标准 PNG。还有一个 Java based solution 可用(我自己还没有测试过),你可能想看看。