Странные ошибки 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

и вот код, вызывающий это:

        bimg = ImageIO.read(icons[i]);

Значки это массив файлов. Странно то, что мой компьютер может нормально читать изображения в любой программе просмотра изображений. Поиск в Google не дал результатов. У меня есть тонна изображений, которые мне нужно прочитать, поэтому есть ли альтернативный способ получить размеры изображения помимо преобразования его в BufferedImage? Это решит проблему? Есть ли способ исправить эти изображения? Я получил их от сбора значков приложений с устройств iOS. Тесты с моих собственных устройств не выдавали ошибок, хотя те, которые ранее были отправлены как часть zip-файла, хотя и собирались одинаково, регулярно вызывали эту ошибку. Все, что я знаю о сжатии, говорит мне, что этого не должно происходить. Я не уверен, где начать искать, и действительно нужно исправить.Вот пример неудачного изображения.

Я должен отметить, что для этой части моей программы все, что мне нужно, это размеры изображения. Я считаю, что это может быть получено путем чтения метаданных, но я также не могу найти подробности об этом с помощью Java.

Ответы на вопрос(1)

Ваш ответ на вопрос