继承人错误:
Exception in thread "main" javax.imageio.IIOException: I/O error reading PNG header! at com.sun.imageio.plugins.png.PNGImageReader.readHeader(PNGImageReader.java:307) at com.sun.imageio.plugins.png.PNGImageReader.readMetadata(PNGImageReader.java:637) at com.sun.imageio.plugins.png.PNGImageReader.readImage(PNGImageReader.java:1212) at com.sun.imageio.plugins.png.PNGImageReader.read(PNGImageReader.java:1560) at javax.imageio.ImageIO.read(ImageIO.java:1422) at javax.imageio.ImageIO.read(ImageIO.java:1282) at Bundle.iconExists(Bundle.java:139) at Bundle.dPhIconExists(Bundle.java:158) at BundleAnalyzer.supports6(BundleAnalyzer.java:14) at TheifReader.(TheifReader.java:14) at TheifReader.main(TheifReader.java:63) Caused by: javax.imageio.IIOException: Bad length for IHDR chunk! at com.sun.imageio.plugins.png.PNGImageReader.readHeader(PNGImageReader.java:239) ... 10 more
以及导致它的代码:
bimg = ImageIO.read(icons[i]);
icons是一个文件数组.奇怪的是,我的电脑可以在任何图像浏览器中读取图像.谷歌搜索错误给了我没有结果.我需要阅读大量图像,除了将图像转换为BufferedImage之外,还有另一种获取图像尺寸的方法吗?这会解决问题吗?有没有办法修复这些图像?我通过从iOS设备收集应用程序图标来获取它们.来自我自己的设备的测试没有产生任何错误,尽管之前作为zip文件的一部分发送的测试虽然以相同的方式收集,但是会定期产生此错误.我所知道的关于压缩的一切都告诉我这不应该发生.我不知道从哪里开始寻找,真的需要修复. 以下是失败图像的示例.
我应该注意,对于我的程序的这一部分,我需要的只是图像尺寸.我相信这可以通过阅读元数据来获得,但我也找不到与java相关的细节.