【转】分析PNG图像文件结构(5)

在未得到原作者的同意下转载,特地在此贴出源地址以作声明:http://wmnmtm.blog.163.com/blog/static/3824571420106236037693/

--------------------------------华丽的分割线----------------------------

图5-24所示为pic1.png中的调色板数据块(PLTE)的数据结构。

查看大图
(点击查看大图)图5-24 pic1.png图像文件中调色板数据块(PLTE)结构
查看大图
(点击查看大图)图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;
BYTE trnsChunkData[chunkHdr.btChunkLen]
DWORD trnsCrc;
图5-25所示为pic1.png中的图像透明数据块(tRNS)的数据结构。
查看大图
(点击查看大图)图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个,每个对应调色
板中的一项,00代表透明,FF代表不透明

53 F7 07 25

CRC值


继续分析下面的数据,按照前面的分析方法,分析出接下来的数据块是图像数据块(IDAT)。对于256色图像来说,图像数据块(IDAT)存放的是指向调色板的索引序号,对于16位色以上图像,图像数据块(IDAT)存放的是实际像素颜色,按0xRRGGBB排列。需要注意的是,图像数据块(IDAT)中的数据是经过变种的LZ77压缩过的。

图像数据块(IDAT)的结构可以用以下代码定义:

PNG_CHUNK_HEADER chunkHdr;
BYTE idatChunkData[chunkHdr.btChunkLen];
DWORD idatCrc;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值