数据压缩作业四——分析PNG图像文件格式

本文深入解析PNG图像格式,包括其设计目的、文件结构、关键数据块及实例分析。PNG是一种无损压缩的位图片形格式,旨在替代GIF和TIFF,支持关键数据块如IHDR、PLTE、IDAT和IEND。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

png是一种无损压缩的位图片形格式[1]。其设计目的是为了替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。

二、文件结构

PNG图像格式文件(或者称为数据流)由一个8字节的PNG文件署名域(PNG file signature)和按照特定结构组织的3个以上的数据块(chunk)组成。
PNG定义了两种类型的数据块,关键数据块(critical chunk)和辅助数据块(ancillary chunks)。关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也都必须要支持这些数据块。辅助数据可选。
1.PNG文件署名域(PNG file signature)8字节
用以识别该文件是不是PNG文件。
该域的值:十六进制数 89 50 4e 47 0d 0a 1a 0a
2.数据块的结构

名称字节数说明
Length(长度)4指定数据块中数据域的长度,其长度不超过(231-1)字节
Chunk Type Code(数据块类型码)4数据块类型码由ASCII字母(A-Z和a-z)组成
Chunk Data(数据块数据)可变长度存储按照Chunk Type Code指定的数据
CRC(循环冗余检测)4存储用来检测是否有错误的循环冗余码

3.关键数据块
(1)文件头数据块IHDR(header chunk)13字节
包含有PNG文件中存储的图像数据的基本信息,作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。

域的名称字节数说明
Width4图像宽度,以像素为单位
Height4图像高度,以像素为单位
Bit depth1图像深度:
灰度图像:1,2,4,8或16
真彩色图像:8或16
ColorType1颜色类型:
0:灰度图像,1,2,4,8或16
2:真彩色图像,8或16
3:索引彩色图像,1,2,4或8
4:带α通道数据的灰度图像,8或16
6:带α通道数据的真彩色图像,8或16
Compression method1压缩方法(LZ77派生算法)
Filter method1滤波器方法
Interlace method1隔行扫描方法:
0:非隔行扫描
1:Adam7(由Adam M. Costello开发的7遍隔行扫描方法)

(2)调色板数据块PLTE(palette chunk)
包含有与索引彩色图像(indexed-color image)相关的彩色变换数据,它仅与索引彩色图像有关,而且要放在图像数据块(image data chunk)之前。真彩色的PNG数据流也可以有调色板数据块,目的是便于非真彩色显示程序用它来量化图像数据,从而显示该图像。

域的名称字节数说明
Red10=黑,255=红
Green10=黑,255=绿
Blue10=黑,255=蓝

调色板实际是一个彩色索引查找表,它的表项数目可以是1~256中的一个数,每个表项有3字节,因此调色板数据块所包含的最大字节数为768。
(3)图像数据块IDAT(image data chunk):它存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。
(4)图像结束数据IEND(image trailer chunk):它用来标记PNG文件或数据流已经结束,并且必须要放在文件的尾部。
值为:
00 00 00 00 49 45 4e 44 ae 42 60 82
三、实例分析
在这里插入图片描述
在这里插入图片描述
1.文件署名域
2.length是13
3.数据块类型IHDR数据块
4.宽度313
5.高度209
6.图像深度8
7.颜色类型0x06带α通道数据的真彩色图像
8.Compression method、Filter method、Interlace method
9.RCR
在这里插入图片描述
图像结束数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值