PNG文件结构分析.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
营销研究PNG文件结构分析

PNG文件结构分析(上:了解PNG文件存储格式)前言我们都知道,在进行J2ME的手机应用程序开发的时候,在图片的使用上,我们可以使用PNG格式的图片(甚至于在有的手机 上,我们只可以使用PNG格式的图片),尽管使用图片可以为我们的应用程序增加不少亮点,然而,只支持PNG格式的图片却又限制了我们进一步发挥的可能性 (其实,应该说是由于手机平台上的处理能力有限)。 在MIDP2中,或者某些厂商(如NOKIA)提供的API中,提供了drawPixels/getPixels的方法,这些方法进一步提高了开发者处理 图片的灵活性,然而,在MIDP2还未完全普及的今天,我们需要在MIDP1 .0中实现这类方法还属于异想天开,因此,为了实现更高级的应用,我们必须充分挖掘PNG的潜力。PNG的文件结构对于一个PNG文件来说,其文件头总是由位固定的字节来描述的:十进制数137 80 78 71 13 10 26 10十六进制数89 50 4E 47 0D 0A 1A 0A其中第一个字节0x89超出了ASCII字符的范围,这是为了避免某些软件将PNG文件当做文本文件来处理。文件中剩余的部分由3个以上的PNG的数据块(Chunk)按照特定的顺序组成,因此,一个标准的PNG文件结构应该如下:PNG文件标志PNG数据块……PNG数据块PNG数据块(Chunk)PNG定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是标准的数据块,另一种叫做辅助数据块(ancillary chunks),这是可选的数据块。关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也都必须要支持这些数据块。虽然 PNG文件规范没有要求PNG编译码器对可选数据块进行编码和译码,但规范提倡支持可选数据块。下表就是PNG中数据块的类别,其中,关键数据块部分我们使用深色背景加以区分。PNG文件格式中的数据块数据块符号数据块名称 多数据块 可选否 位置限制 IHDR 文件头数据块 否 否 第一块 cHRM 基色和白色点数据块 否 是在PLTE和IDAT之前gAMA 图像γ数据块 否 是在PLTE和IDAT之前 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 (专用公共数据块) 是是无限制 gIFt (专用公共数据块) 是是无限制 gIFx (专用公共数据块) 是是无限制 IEND 图像结束数据 否 否 最后一个数据块 为了简单起见,我们假设在我们使用的PNG文件中,这4个数据块按以上先后顺序进行存储,并且都只出现一次。数据块结构PNG文件中,每个数据块由4个部分组成,如下:名称 字节数 说明 Length (长度) 4字节 指定数据块中数据域的长度,其长度不超过(231-1)字节 Chunk Type Code (数据块类型码) 4字节 数据块类型码由ASCII字母(A-Z和a-z)组成 Chunk Data (数据块数据) 可变长度 存储按照Chunk Type Code指定的数据 CRC (循环冗余检测) 4字节 存储用来检测是否有错误的循环冗余码 CRC(cyclic redundancy check)域中的值是对Chunk Type Code域和Chunk Data域中的数据进行计算得到的。CRC具体算法定义在ISO 3309和ITU-T V.42中,其值按下面的CRC码生成多项式进行计算:x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1下面,我们依次来了解一下各个关键数据块的结构吧。IHDR文件头数据块IHDR(header chunk):它包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。文件头数据块由13字节组成,它的格式如下表所示。域的名称 字节数 说明 Width 4 bytes 图像宽度,以像素为单位 Height 4 bytes 图像高度,以像素为单位 Bit depth 1

文档评论(0)

rovend + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档