PNG图像文件格式结构分析
1.PNG图像格式介绍
概述
PNG(Portable Network Graphics),可移植网络图形格式文件,是一种采用无损压缩算法的位图格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG使用从LZ77派生的无损数据压缩算法,一般应用于JAVA程序、网页或S60程序中,原因是它压缩比高,生成文件体积小。
PNG数据块结构
PNG的每一个数据块又可分为四个域,分别为长度、类型、数据域、循环冗余检测。
1.长度:显示数据字段的长度信息,为4字节无符号整数,故数据长度限制在(2^31-1)字节。
2.类型:为4字节数据块类型码,为了便于描述和检查PNG文件,类型代码仅限于大写和小写的ASCII字母。
3.数据域:存储按照数据块类型码指定的数据, 该字段可以是长度为零。
4.循环冗余检测:一个4字节的CRC(循环冗余校验)计算,在所述块的前面的字节,包括该块类型的代码和数据块的数据字段,但是不包括长度字段。 CRC始终存在,即使不包含数据块。
文件结构
对于一个PNG文件来说,其文件头总是由位固定的字节来描述的:
- 十进制数 137 80 78 71 13 10 26 10
- 十六进制数 89 50 4E 47 0D 0A 1A 0A