栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

奇怪的PNG错误:IHDR块的长度错误

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

奇怪的PNG错误:IHDR块的长度错误

根据PNG规范:

4.1.1。 IHDR映像头

IHDR块必须首先出现。

您的示例图像包含一个自定义关键块

CgBI
作为第一个块,并且不符合该规范。这就是为什么您会得到例外。

实际上,您的图片似乎是“ iOS优化的PNG”。

来自http://fileformats.archiveteam.org/wiki/CgBI:

它与PNG不兼容。由于未知的“关键块”,不支持它的标准PNG解码器将正常运行。

现在,可能应该被视为中的错误

com.sun.imageio.plugins.png.PNGImageReader
是:
IHDR
在声称它可以读取输入之前,它不检查第一个块实际上是一个块。

您可以通过在您认为可以正常阅读的查看器/应用之一中读取图像来修复图像,然后将其写回为普通的PNG。我在OS
X上使用Preview进行了测试,效果很好。试试看。

如果在OS X上(使用开发工具),您还应该能够通过以下命令行使用Apple修改后的pngcrush:

xcrun -sdk iphoneos pngcrush -revert-iphone-optimizations infile.png outfile.png

如果您只想获取图像的宽度/高度,则无需阅读full

BufferedImages
,只需获取an
ImageReader
并使用其
getWidth(0)
and
getHeight(0)
方法(SO上已经有很多示例,因此无需重复)。

您可能还可以创建一个快速的PNG结构解析器,该解析器跳过该

CgBI
块并
IHDR
直接对其进行解析,以获取宽度/高度。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497154.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号