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

PNG文件格式概述

PNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图形格式(Portable Network Graphic Format,PNG)名称来源于非官方的“PNG’s Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。
PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可存储多到16位的α通道数据。PNG使用从LZ77派生的无损数据压缩算法。

PNG数据块结构

PNG的每一个数据块又可分为四个域,分别为长度、类型、数据域、循环冗余检测。

长度:显示数据字段的长度信息,为4字节无符号整数,故数据长度限制在(2^31-1)字节。

类型:为4字节数据块类型码,为了便于描述和检查PNG文件,类型代码仅限于大写和小写的ASCII字母。

数据域:存储按照数据块类型码指定的数据, 该字段可以是长度为零。

循环冗余检测:一个4字节的CRC(循环冗余校验)计算,在所述块的前面的字节,包括该块类型的代码和数据块的数据字段,但是不包括长度字段。 CRC始终存在,即使不包含数据块。

文件结构

对于一个PNG文件来说,其文件头总是由位固定的字节来描述的:

十进制数 137 80 78 71 13 10 26 10
十六进制数 89 50 4E 47 0D 0A 1A 0A

实例分析

找到一张cat.png如下图:
在这里插入图片描述
使用FlexHEX以二进制形式打开文件
在这里插入图片描述

IFH分析

(1)首先,选中的头8个字节即为PNG文件的固定标识。
在这里插入图片描述
(2)IHDR数据块
在这里插入图片描述
00 00 00 0D 说明IHDR头块长为13
49 48 44 52 IHDR标识
00 00 07 D0 图像的宽,2000像素
00 00 07 D0 图像的高,2000像素
08 色深,2^8=256,即这是一个256色的图像
06 颜色类型,真彩色图像
00 PNG Spec规定此处总为0(非0值为将来使用更好的压缩方法预留),表示使压缩方法(LZ77派生算法)
00 同上
00 非隔行扫描
9A 38 C4 79 CRC校验

(3)gAMA图像y数据块:
在这里插入图片描述
(4)cHRM基色和白色点数据块:
在这里插入图片描述
(5)PLTE调色板数据块:

在这里插入图片描述
PLTE数据块是定义图像的调色板信息,PLTE可以包含1~256个调色板信息,每一个调色板信息由3个字节组成。对于索引图像,调色板信息是必须的,调色板的颜色索引从0开始编号,然后是1、2……,调色板的颜色数不能超过色深中规定的颜色数(如图像色深为4的时候,调色板中的颜色数不可以超过2^4=16)。
由实例可知:色深为8,则颜色数不超过2^8=256,而调色板长度为1216=192=364,是3的倍数

(6)bKGD背景颜色数据块:
在这里插入图片描述
(7)pHYs物理像素尺寸数据块:
在这里插入图片描述
(8)tIME图像最后修改时间数据块:
在这里插入图片描述

(9)IDAT图像数据块:
在这里插入图片描述
22 22 0A 20 数据长为572656160字节

20 20 20 20 IDAT标识

20 20…… 压缩的数据

(11)IEND图像结束数据:

在这里插入图片描述

实验总结与感想

PNG格式与BMP格式都有说明文件的信息,描述图像内容的数据,调色板。由于PNG中规定除关键数据块外,其它的辅助数据块都为可选部分,因此,有了这个标准后,我们可以通过删除所有的辅助数据块来减少PNG文件的大小。
PNG是一种比较新的图片格式,PNG-8是非常好的GIF格式替代者,在可能的情况下,应该尽可能的使用PNG-8而不是GIF,因为在相同的图片效果下,PNG-8具有更小的文件体积。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值