数据压缩作业 | PNG文件格式分析

PNG文件的结构

PNG图像格式文件由文件署名和数据块(chunk)组成。
PNG文件的文件头是由固定的字节来描述的:
在这里插入图片描述
第一个字节0x89超出了ASCII字符的范围,这是为了避免PNG文件被当做文本文件来处理,文件剩余的部分由3个以上的数据块(chunk)按一定顺序组成。

PNG文件的数据块分类及结构

PNG有两种数据块类型:
关键数据块(critical chunk)和辅助数据块(ancillary chunk)。
关键数据块是标准的数据块,定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也必须包含它们;辅助数据块是可选的数据块。
每个数据块都由长度、数据块类型码、数据块数据、循环冗余检测这四个部分组成:
在这里插入图片描述
其中,循环冗余检测域中的值是对数据类型码域和数据块数据域中的数据进行计算得到的。

关键数据块定义的4个标准数据块为:IHDR、PLTE、IDAT、IEND。
IHDR(文件头数据块)
由13个字节组成,包含有PNG文件中存储的图像数据的基本信息,并作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。

PLTE(调色板数据块)
包含有与索引彩色图像相关的彩色变换数据,仅与索引彩色图像有关,而且要放在图像数据块之前。
PLTE数据块是定义图像的调色板信息,PLTE可以包含1~256个调色板信息,每个调色板信息由3个字节组成:
在这里插入图片描述
IDAT(图像数据块)
存储实际的数据,在数据流中可包含多个连续的图像数据块。它存放着图像真正的数据信息,所以了解IDAT的结构可以方便生成PNG图像。

IEND(图像结束数据)
用来标记PNG文件或者数据流已结束,必须要放在文件的尾部。
文件尾部有12个固定的字符:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值