我正在使用 NSURLRequest 下载 jpg 和 png。这工作正常,但有时文件会损坏。
我见过捕获错误:损坏的 JPEG 数据:数据段过早结束并使其适用于 jpg。
有谁知道对 png 做同样的事情的方法吗?即以编程方式检查 png 数据是否有效...
PNG 格式有几个内置检查。每个“块”都有 CRC32 检查,但要检查您需要读取完整文件。
更基本的检查(当然不是万无一失的)是读取文件的开头和结尾。
前 8 个字节应始终是以下(十进制)值{ 137, 80, 78, 71, 13, 10, 26, 10 }
(ref)。特别地,第二到第四字节对应于ASCII字符串“PNG”。
以十六进制表示:
89 50 4e 47 0d 0a 1a 0a
.. P N G ...........
您还可以检查文件的最后 12 个字节(IEND 块)。中间 4 个字节应对应于 ASCII 字符串“IEND”。更具体地说,最后 12 个字节应该是(十六进制):
00 00 00 00 49 45 4e 44 ae 42 60 82
........... I E N D ...........
(严格来说,PNG 文件并不一定要以这 12 个字节结尾,IEND 块本身就表示 PNG 流的结束,因此文件原则上可以有额外的尾随字节,这些字节会被 PNG 阅读器忽略。实际上,这是极不可能的)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)