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

面包会有的

... ...

 
 
 

日志

 
 

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

2010-07-23 17:59:53|  分类: VC++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

5.2.3  分析PNG图像文件结构(4)

表5-19所示为pic1.png图像文件中的gAMA数据块各字段的含义。

表5-19 pic1.png图像文件中的gAMA数据块各字段的含义


十六进制值

描    述

00 00 00 04

gAMA数据块的长度,00 00 00 04 = 4

67 41 4D 41

数据块类型标志,67 41 4D 41的ASCII值等于gAMA

00 00 B1 8E

gamma校正信息

7C F8 51 93

CRC值


继续分析下面的数据,按照前面的分析方法,分析出接下来的数据块是cHRM,cHRM是在设备不能够显示正确的颜色时,使图像尽可能校正颜色的信息,也叫做设备无关的颜色信息。

cHRM数据块的结构可以用以下代码定义:

typedef struct {
uint x;
uint y;
} PNG_POINT;
typedef struct {
PNG_POINT white;
PNG_POINT red;
PNG_POINT green;
PNG_POINT blue;
} PNG_CHRM_CHUNK_DATA;
PNG_CHUNK_HEADER chunkHdr;
PNG_CHRM_CHUNK_DATA chrmChunkData;
DWORD chrmCrc;
图5-23所示为pic1.png中的cHRM的数据结构。
498)this.style.width=498;" border=0< 
(点击查看大图)图5-23  pic1.png图像文件中cHRM数据块结构

表5-20所示为pic1.png图像文件中的cHRM数据块各字段的含义。

表5-20 pic1.png图像文件中的cHRM数据块各字段的含义


十六进制值

描    述

00 00 00 20

cHRM数据块的长度,00 00 00 20 = 32

63 48 52 4D

数据块类型标志,63 48 52 4D的ASCII值等于cHRM

00 00 7A 25

白色点的x轴坐标,00 00 7A 25 = 31269


续表


十六进制值

描    述

00 00 80 83

白色点的y轴坐标,00 00 80 83 = 32899

00 00 F9 FF

红x坐标,00 00 F9 FF = 63999

00 00 80 E9

红y坐标,00 00 80 E9 = 33001

00 00 75 30

绿x坐标,00 00 75 30 = 30000

00 00 EA 60

绿y坐标,00 00 EA 60 = 60000

00 00 3A 98

蓝x坐标,00 00 3A 98 = 15000

00 00 17 6F

蓝x坐标,00 00 17 6F  = 5999

92 5F C5 46

CRC值


继续分析下面的数据,按照前面的分析方法,分析出接下来的数据块是调色板数据块(PLTE),因为pic1.png是256色图像,所以应该有256个调色板项,每个调色板项占3字节。

调色板数据块(PLTE)的结构可以用以下代码定义:

typedef struct {
BYTE btRed;
BYTE btGreen;
BYTE btBlue;
} PNG_PALETTE_PIXEL;
PNG_CHUNK_HEADER chunkHdr;
PNG_PALETTE_PIXEL plteChunkData[chunkHdr.btChunkLen/3];
DWORD plteCrc;
  评论这张
 
阅读(766)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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