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

面包会有的

... ...

 
 
 

日志

 
 

PNG图像文件存储结构(1)  

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

  下载LOFTER 我的照片书  |

5.2.2  PNG图像文件存储结构(1)

PNG文件存储结构的格式可以在http://www.w3.org/TR/REC-png.htm上找到定义。

BMP文件总体上由两部分组成,分别是PNG文件标志和数据块(chunks),如表5-8所示。其中数据块分为两类:关键数据块(critical chunk)和辅助数据块(ancillary chunks)。

表5-8 PNG文件的组成结构


PNG文件标志

数据块(chunks)


1.PNG文件标志

PNG文件标志由8字节数据组成:89 50 4E 47 0D 0A 1A 0Ah,其中50 4E 47对应的ASCII值是"PNG"。

2.数据块(chunks)

紧跟在PNG文件标志后面的数据是数据块(chunks),数据块(chunks)分为两类:关键数据块(critical chunks)和辅助数据块(ancillary chunks)。

关键数据块(critical chunk)在PNG文件中是必须有的,而辅助数据块(ancillary chunks)是可选的。

关键数据块(critical chunks)由4部分组成:文件头数据块(IHDR)、调色板数据块(PLTE)、图像数据块(IDAT)和图像结束数据(IEND),其中调色板数据块(PLTE)根据图像的色深可选。

辅助数据块(ancillary chunks)一共有14个,这些辅助数据块包含了很多信息,辅助数据块不是必须包含的。

PNG文件的关键数据块和辅助数据块的组织顺序如表5-9和表5-10所示。

表5-9 PNG文件的关键数据块(critical chunks)组织顺序


数据块名称

允许多

个数据块

位    置

文件头数据块(IHDR)

不允许

第一个数据块

调色板数据块(PLTE)

不允许

第二个数据块,可选

图像数据块(IDAT)

允许

如果有调色板数据块(PLTE),则是第三个数据块,如果没有调色板数据块(PLTE),则时第二个数据块。如果有多个图像数据块,则必须按图像数据连续存储

图像结束数据(IEND)

不允许

最后一个数据块


表5-10 PNG文件的辅助数据块(ancillary chunks)组织顺序


数据块名称

允许多个

数据块

位    置

基色和白色点数据块(cHRM

不允许

在PLTE和IDAT之前

图像γ数据块(gAMA

不允许

在PLTE和IDAT之前

ICCP(iCCP)

允许

在PLTE之后IDAT之前如果有iCCP,则无sRGB


续表


数据块名称

允许多个

数据块

位    置

样本有效位数据块(sBIT

不允许

在PLTE和IDAT之前

标准RPG颜色(sRGB

不允许

在PLTE之后IDAT之前如

果有sRGB,则无iCCP

背景颜色数据块(bKGD

不允许

在PLTE之后IDAT之前

图像直方图数据块(hIST

不允许

在PLTE之后IDAT之前

图像透明数据块(tRNS

不允许

在PLTE之后IDAT之前

物理像素尺寸数据块(pHYs

不允许

在IDAT之前

建议调色板(sPLT

允许

在IDAT之前

图像最后修改时间数据块(tIME

不允许

无限制

国际文本数据(iTXt

允许

无限制

文本信息数据块(tEXt

允许

无限制

压缩文本数据块(zTXt

允许

无限制

  评论这张
 
阅读(1362)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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