小编use*_*716的帖子

奇怪的PNG错误:IHDR块的长度不正确

继承人错误:

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.<init>(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
Run Code Online (Sandbox Code Playgroud)

以及导致它的代码:

        bimg = ImageIO.read(icons[i]);
Run Code Online (Sandbox Code Playgroud)

icons是一个文件数组.奇怪的是,我的电脑可以在任何图像浏览器中读取图像.谷歌搜索错误给了我没有结果.我需要阅读大量图像,除了将图像转换为BufferedImage之外,还有另一种获取图像尺寸的方法吗?这会解决问题吗?有没有办法修复这些图像?我通过从iOS设备收集应用程序图标来获取它们.来自我自己的设备的测试没有产生任何错误,尽管之前作为zip文件的一部分发送的测试虽然以相同的方式收集,但是会定期产生此错误.我所知道的关于压缩的一切都告诉我这不应该发生.我不知道从哪里开始寻找,真的需要修复. 以下是失败图像的示例.

我应该注意,对于我的程序的这一部分,我需要的只是图像尺寸.我相信这可以通过阅读元数据来获得,但我也找不到与java相关的细节.

java png bufferedimage javax.imageio

2
推荐指数
1
解决办法
3087
查看次数

标签 统计

bufferedimage ×1

java ×1

javax.imageio ×1

png ×1