png文件结构分析

png文件结构分析

ID:6445338

大小:131.12 KB

页数:13页

时间:2018-01-14

png文件结构分析_第1页
png文件结构分析_第2页
png文件结构分析_第3页
png文件结构分析_第4页
png文件结构分析_第5页
资源描述:

《png文件结构分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、PNG文件结构分析(上:了解PNG文件存储格式)前言我们都知道,在进行J2ME的手机应用程序开发的时候,在图片的使用上,我们可以使用PNG格式的图片(甚至于在有的手机上,我们只可以使用PNG格式的图片),尽管使用图片可以为我们的应用程序增加不少亮点,然而,只支持PNG格式的图片却又限制了我们进一步发挥的可能性(其实,应该说是由于手机平台上的处理能力有限)。在MIDP2中,或者某些厂商(如NOKIA)提供的API中,提供了drawPixels/getPixels的方法,这些方法进一步提高了开发者处理图片的灵活性,然而,在MIDP2还未完全普及的今天,我们需要在MIDP1.0中实

2、现这类方法还属于异想天开,因此,为了实现更高级的应用,我们必须充分挖掘PNG的潜力。PNG的文件结构对于一个PNG文件来说,其文件头总是由位固定的字节来描述的:十进制数13780787113102610十六进制数89504E470D0A1A0A其中第一个字节0x89超出了ASCII字符的范围,这是为了避免某些软件将PNG文件当做文本文件来处理。文件中剩余的部分由3个以上的PNG的数据块(Chunk)按照特定的顺序组成,因此,一个标准的PNG文件结构应该如下:PNG文件标志PNG数据块……PNG数据块PNG数据块(Chunk)PNG定义了两种类型的数据块,一种是称为关键数据块(

3、criticalchunk),这是标准的数据块,另一种叫做辅助数据块(ancillarychunks),这是可选的数据块。关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也都必须要支持这些数据块。虽然PNG文件规范没有要求PNG编译码器对可选数据块进行编码和译码,但规范提倡支持可选数据块。下表就是PNG中数据块的类别,其中,关键数据块部分我们使用深色背景加以区分。PNG文件格式中的数据块数据块符号数据块名称多数据块可选否位置限制IHDR文件头数据块否否第一块cHRM基色和白色点数据块否是在PLTE和IDAT之前gAMA图像γ数据块否是在PLTE和I

4、DAT之前sBIT样本有效位数据块否是在PLTE和IDAT之前PLTE调色板数据块否是在IDAT之前bKGD背景颜色数据块否是在PLTE之后IDAT之前hIST图像直方图数据块否是在PLTE之后IDAT之前tRNS图像透明数据块否是在PLTE之后IDAT之前oFFs(专用公共数据块)否是在IDAT之前pHYs物理像素尺寸数据块否是在IDAT之前sCAL(专用公共数据块)否是在IDAT之前IDAT图像数据块是否与其他IDAT连续tIME图像最后修改时间数据块否是无限制tEXt文本信息数据块是是无限制zTXt压缩文本数据块是是无限制fRAc(专用公共数据块)是是无限制gIFg(专

5、用公共数据块)是是无限制gIFt(专用公共数据块)是是无限制gIFx(专用公共数据块)是是无限制IEND图像结束数据否否最后一个数据块为了简单起见,我们假设在我们使用的PNG文件中,这4个数据块按以上先后顺序进行存储,并且都只出现一次。数据块结构PNG文件中,每个数据块由4个部分组成,如下:名称字节数说明Length(长度)4字节指定数据块中数据域的长度,其长度不超过(231-1)字节ChunkTypeCode(数据块类型码)4字节数据块类型码由ASCII字母(A-Z和a-z)组成ChunkData(数据块数据)可变长度存储按照ChunkTypeCode指定的数据CRC(循环

6、冗余检测)4字节存储用来检测是否有错误的循环冗余码CRC(cyclicredundancycheck)域中的值是对ChunkTypeCode域和ChunkData域中的数据进行计算得到的。CRC具体算法定义在ISO3309和ITU-TV.42中,其值按下面的CRC码生成多项式进行计算:x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1下面,我们依次来了解一下各个关键数据块的结构吧。IHDR文件头数据块IHDR(headerchunk):它包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且

7、一个PNG数据流中只能有一个文件头数据块。文件头数据块由13字节组成,它的格式如下表所示。域的名称字节数说明Width4bytes图像宽度,以像素为单位Height4bytes图像高度,以像素为单位Bitdepth1byte图像深度:索引彩色图像:1,2,4或8灰度图像:1,2,4,8或16真彩色图像:8或16ColorType1byte颜色类型:0:灰度图像,1,2,4,8或162:真彩色图像,8或163:索引彩色图像,1,2,4或84:带α通道数据的灰度图像,8或166:带α通道数据的真彩色图像,8

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。