5.2.3 分析PNG图像文件结构(6)
图5-26所示为pic1.png中的图像数据块(IDAT)的数据结构。
498)this.style.width=498;" border=0< |
(点击查看大图)图5-26 pic1.png中的图像数据块(IDAT)的数据结构 |
498)this.style.width=498;" border=0< |
(点击查看大图)图5-26 pic1.png中的图像数据块(IDAT)的数据结构 |
表5-23所示为pic1.png图像文件中的图像数据块(IDAT)各字段的含义。
表5-23 pic1.png图像文件中图像数据块(IDAT)各字段的含义
十六进制值 | 描 述 |
00 00 3D 53 | IDAT数据块的长度,00 00 3D 53 = 15699 |
49 44 41 54 | 数据块类型标志,49 44 41 54的ASCII值等于IDAT |
78~67 | 图像数据块,一共15699字节,使用变种的LZ77压缩过 |
0E EE 51 34 | CRC值 |
继续分析下面的数据,按照前面的分析方法,分析出接下来的数据块是图像结束数据(IEND),一般情况下所有PNG图像的图像结束数据(IEND)是一样的,除非自行修改。
图像结束数据(IEND)的结构可以用以下代码定义:
PNG_CHUNK_HEADER chunkHdr; |
498)this.style.width=498;" border=0< |
(点击查看大图)图5-27 pic1.png中的图像结束数据(IEND)的数据结构 |
表5-24所示为pic1.png图像文件中的图像结束数据(IEND)各字段的含义。
表5-24 pic1.png图像文件中图像结束数据(IEND)各字段的含义
十六进制值 | 描 述 |
00 00 00 00 | IEND数据块的长度,00 00 00 00 = 0 |
49 45 4E 44 | 数据块类型标志,49 45 4E 44的ASCII值等于IEND |
AE 42 60 82 | CRC值 |
pic1.png文件格式已经分析完毕,pic2.png的文件格式可以参考上面pic1.png的分析,表5-25显示了pic1.png和pic2.png的文件结构区别。
表5-25 pic1.png和pic2.png的文件结构区别
pic1.png文件结构 | pic2.png文件结构 |
IHDR | IHDR |
pHYs | pHYs |
iCCP | iCCP |
gAMA | gAMA |
cHRM | cHRM |
PLTE | × |
tRNS | × |
IDAT | IDAT |
IEND | IEND |
从表5-24可以看出pic2.png没有PLTE和tRNS数据块,因为pic2.png是16位色图像不需要使用调色板。
PNG图像文件存储的数据块比较多,一般情况每个PNG图像文件的iCCP、gAMA和cHRM数据块中的数据是一样的,只有IHDR和pHYs两个数据块中某些字段数据不同,如图5-28所示。
498)this.style.width=498;" border=0< |
(点击查看大图)图5-28 两张不同的PNG格式图像的区别 |
498)this.style.width=498;" border=0< |
(点击查看大图)图5-28 两张不同的PNG格式图像的区别 |