5.2.3 分析PNG图像文件结构(5)
图5-24所示为pic1.png中的调色板数据块(PLTE)的数据结构。
498)this.style.width=498;" border=0< |
(点击查看大图)图5-24 pic1.png图像文件中调色板数据块(PLTE)结构 |
498)this.style.width=498;" border=0< |
(点击查看大图)图5-24 pic1.png图像文件中调色板数据块(PLTE)结构 |
表5-21 所示为pic1.png图像文件中的调色板数据块(PLTE)各字段的含义。
表5-21 pic1.png图像文件中调色板数据块(PLTE)各字段的含义
十六进制值 | 描 述 |
00 00 03 00 | PLTE数据块的长度,00 00 03 00 = 768 |
50 4C 54 45 | 数据块类型标志,50 4C 54 45的ASCII值等于PLTE |
00 00 00 | 调色板第1个索引 |
FF FF FF | 调色板第2个索引 |
EA FF FF | 调色板第3个索引 |
………… | 调色板第…个索引 |
E4 DC DC | 调色板第255个索引 |
FF FF FF | 调色板第256个索引 |
7D 2C 3D AD | CRC值 |
继续分析下面的数据,按照前面的分析方法,分析出接下来的数据块是图像透明数据块(tRNS),对于256色图像来说,图像透明数据块(tRNS)一共有256项,每项对应调色板数据块中的一项,00代表透明,FF代表不透明。
图像透明数据块(tRNS)的结构可以用以下代码定义:
PNG_CHUNK_HEADER chunkHdr; |
498)this.style.width=498;" border=0< |
(点击查看大图)图5-25 pic1.png图像文件中图像透明数据块(tRNS)的结构 |
表5-22所示为pic1.png图像文件中的图像透明数据块(tRNS)各字段的含义。
表5-22 pic1.png图像文件中图像透明数据块(tRNS)各字段的含义
十六进制值 | 描 述 |
00 00 01 00 | tRNS数据块的长度,00 00 01 00 = 256 |
74 52 4E 53 | 数据块类型标志,74 52 4E 53的ASCII值等于tRNS |
FF~00 | 图像透明数据块,一共256个,每个对应调色 |
53 F7 07 25 | CRC值 |
继续分析下面的数据,按照前面的分析方法,分析出接下来的数据块是图像数据块(IDAT)。对于256色图像来说,图像数据块(IDAT)存放的是指向调色板的索引序号,对于16位色以上图像,图像数据块(IDAT)存放的是实际像素颜色,按0xRRGGBB排列。需要注意的是,图像数据块(IDAT)中的数据是经过变种的LZ77压缩过的。
图像数据块(IDAT)的结构可以用以下代码定义:
PNG_CHUNK_HEADER chunkHdr; |