《PNG文件格局》(二)PNG文件格局剖析

2020-03-31 皇冠体育app下载 阅读

  欢迎检查系列博客:

  《PNG文件格局》(一)PNG文件概述? ? 《PNG文件格局》(二)PNG文件格局剖析(本篇)

  《PNG文件格局》(三)PNG文件实例剖析

  摘自:

  中文PNG格局说明:dev.gameres.com

  PNG文件格局白皮书:www.w3.org

  LZ77算法的JAVA完成:jazzlib.sourceforge.net

  LZ77算法的JAVA完成,包罗J2ME版本:www.jcraft.com

  ===============================注释=======================================

  关于一个PNG文件来讲,其文件头总是由位固定的字节来刻画的,HEX: 89 50 4E 47 0D 0A 1A 0A

  应用ultra翻开一个png图片,结果以下:

  

  ? ? ? ? 个中第一个字节0x89超越了ASCII字符的范围,这是为了防止某些软件将PNG文件当作文本文件来处理。文件中残剩的局部由3个以上的PNG的数据块(Chunk)依照特定的依次构成,因此,一个规范的PNG文件结构应当以下:

  ? ? ? ? PNG定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是规范的数据块,另外一种叫做辅佐数据块(ancillary chunks),这是可选的数据块。关键数据块定义了4个规范数据块,每个PNG文件都必须包罗它们,PNG读写软件也都必须要支撑这些数据块。你可以从“可选否”一栏检查可否必须支撑的数据块。固然PNG文件规范没有请求PNG编译码器对可选数据块停止编码和译码,但规范倡议支撑可选数据块。

  下表就是PNG中数据块的种别,个中,关键数据块局部我们应用深色配景加以辨别。

  这里要弥补一个iCCP

  PNG文件中,每个数据块(比如IHDR,cHRM,IDAT等)由4个局部构成,以下:

  CRC(cyclic redundancy check)域中的值是对Chunk Type Code域和Chunk Data域中的数据停止计算掉掉落的。CRC具体算法定义在ISO 3309和ITU-T V.42中.

  留心:Length值的是除:length自身,Chunk Type Code,CRC外的长度,也就是Chunk Data的长度。

  下面,我们依次来了解一下各个【关键数据块】的结构

  ? ? ? ? 文件头数据块IHDR(header chunk):它包罗有PNG文件中存储的图象数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流(文件)中只能有一个文件头数据块。

  文件头数据块由13字节构成,它的格局以下表所示:

  因为我们研究的是手机上的PNG,因此,起首我们看看MIDP1.0对所应用PNG图片的请求吧:

  ● 在MIDP1.0中,我们只可以应用1.0版本的PNG图片。而且,所以的PNG关键数据块都有特别请求:

  IHDR

  ● 文件大年夜小:MIDP支撑任意大年夜小的PNG图片,然则,实践上,假设一个图片过大年夜,会因为内存耗尽而没法读取。

标签: