登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

... ...

 
 
 

日志

 
 

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

2010-07-23 18:00:37|  分类: VC++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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;
BYTE trnsChunkData[chunkHdr.btChunkLen]
DWORD trnsCrc;
图5-25所示为pic1.png中的图像透明数据块(tRNS)的数据结构。
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个,每个对应调色
板中的一项,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;
  评论这张
 
阅读(1209)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018