数据压缩学习笔记(二)以PNG为例探讨设计思想和理解

一、PNG文件的组成

Png文件构成方式如下:
在这里插入图片描述
其中:
PNG文件署名固定8字节为89 50 4E 47 0D 0A 1A 0A

每个数据块由四部分构成:

名称字节数说明
Length(长度)4Bytes指定数据块中数据长度,不超过(231-1)字节
Chunk Type Code(类型码)4Bytes由ASCII字母(A-Z和a-z)构成
Chunk Data(实际数据)可变存放指定类型数据
CRC(循环冗余检测)4Bytes用于错误校验

PNG定义了两种类型的数据块,一种是称为重要数据块(critical chunk),这是标准的数据块,还有一种叫做辅助数据块(ancillary chunks),这是可选的数据块。

重要数据块又分为:

  1. 文件头数据块IHDR(header chunk)

包含PNG文件里存储的图像数据的基本信息,作为第一个数据块出现在PNG数据流中,一个PNG数据流有且仅有一个文件头数据块。

名称字节数说明
Width4Bytes图像宽度
Height4Bytes图像高度
Bit depth1Bytes图像深度:索引彩色图像:1,2,4或8灰度图像:1,2,4,8或16
真彩色图像:8或16
ColorType1Bytes颜色类型:0:灰度图像, 1,2,4,8或16 ; 2:真彩色图像,8或16 ; 3:索引彩色图像,1,2,4或8 ; 4:带α通道数据的灰度图像,8或16 ; 6:带α通道数据的真彩色图像,8或16
Compression method1Bytes压缩方法
Filter method1Bytes滤波器方法
Interlace method1Bytes隔行扫描方法:0:非隔行扫描 ; 1: Adam7(由Adam M. Costello开发的7遍隔行扫描方法)
  1. 调色板数据块PLTE(palette chunk)

它包含有与索引彩色图像(indexed-color image)相关的彩色变换数据,它仅与索引彩色图像有关,而且要放在图像数据块(image data chunk)之前。PLTE能够包括1~256个调色板信息,每个调色板信息由3个字节组成:

颜色字节说明
Red1Bytes红色,0-255
Green1Bytes绿色,0-255
Blue1Bytes蓝色,0-255
  1. 图像数据块IDAT(image data chunk)

存储实际的数据,数据流中往往包含多个IDAT块。是根据压缩方法压缩后的数据。

  1. 图像结束数据IEND(image trailer chunk)

Chunk Data(实际数据)为空,并且整个数据块内容固定为:

00 00 00 00 49 45 4E 44 AE 42 60 82

IEND数据块的长度总是0(00 00 00 00),数据标识为IEND(49 45 4E 44),因此,CRC码也总是AE 42 60 82。

可选数据块分为以下类型:

  1. 背景颜色数据块bkGD(background color).
  2. 基色和白色度数据块cHRM(primary chromaticities and white point). 所谓白色度是指当R=G=B=最大值时在显示器上产生的白色度。
  3. 图像透明数据块tRNS(transparency).
  4. 物理像素尺寸数据块pHYs(physical pixel dimensions).
二、关于PNG文件的设计思想和理解
  1. 该容器包含哪些必要元数据信息?
    答:为正确显示一幅图片,我们需要知道它的长宽,色彩和图像深度等基本信息。为了节省储存空间,往往会对图像数据进行压缩。因此,还需要在元数据中包含图像的压缩信息。

  2. 为什么图像文件中需要加入可选的调色板,PNG是否支持调色板?
    答:对于某些对色彩要求不高的应用,往往只需要几十上百种色彩,若此时再用24bits真彩色,则或造成数据的冗余,文件体积过大。因此,采用调色板-索引的方式可以减少数据量。PNG文件支持调色板,但调色板最多仅256个信息,少于BMP文件。

  3. PNG文件哪些设计使得文件便于编辑与管理?
    答:①文件分块,每个块携带与其功能相对应的信息,这使得在进行编辑时可根据编辑需要直接访问编辑相应数据;②每个块用自己的类型码进行标识,便于定位相应元数据信息,且Chunk的元数据中包含数据长度信息,可定位至块中的数据信息和下一个块的起始,便于快速访问块中数据。

  4. PNG文件哪些设计使得文件便于交换和存储?
    答:①文件支持压缩算法,可有效减少文件体积;②文件数据块可选,这使得一个PNG文件可以不携带不必要的数据块从而减小体积;③支持循环冗余检测,并以块为单位,这使得在传输时可及时发现文件的错误并大致定位出错的位置。

  5. PNG文件是否具有扩展性?
    答:PNG文件的扩展性体现在可选择的数据块上。根据不同的应用需求,文件可携带背景色、透明度等信息的数据块,以便适用于不同应用场景。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值