[数据压缩]PNG图像格式结构分析

目录

PNG概述

PNG文件结构分析

根据实际PNG图像的格式结构分析

参考文献


PNG概述

流式网络图形格式(Portable Network Graphic Format,PNG)是一种采用无损压缩算法的位图格式。PNG开发的目的是替代GIF和TIFF文件格式,并增加一些GIF文件格式所不具备的特性。PNG使用从LZ77派生的无损数据压缩算法。PNG在存储灰度图像时,灰度图像的深度可多到16位,在存储彩色图像时,彩色图像的深度可多到48位,同时还可存储多到16位的α通道数据。

PNG文件格式保留GIF文件格式的下列特性:

  1. 使用彩色查找表或者叫做调色板可支持256种颜色的彩色图像。 
  2. 流式读/写性能:图像文件格式允许连续读出和写入图像数据。 
  3. 逐次逼近显示:在通信链路上传输图像文件的同时就在终端上显示图像,把整个轮廓显示出来之后逐步显示图像的细节,也就是先用低分辨率显示图像,然后逐步提高它的分辨率。 
  4. 透明性:图像中某些部分不显示出来,用来创建一些有特色的图像。 
  5. 辅助信息:可用来在图像文件中存储一些文本注释信息。 
  6. 独立于计算机软硬件环境。 
  7. 使用无损压缩。

PNG文件格式中要增加下列GIF文件格式所没有的特性:

  1. 每个像素为48位的真彩色图像。 
  2. 每个像素为16位的灰度图像。 
  3. 可为灰度图和真彩色图添加α通道。 
  4. 添加图像的γ信息。 
  5. 使用循环冗余码(CRC)检测损害的文件。 
  6. 加快图像显示的逐次逼近显示方式。 
  7. 标准的读/写工具包。 
  8. 可在一个文件中存储多幅图像。

PNG文件结构分析

PNG图像格式文件一个8字节的PNG文件署名域和按照特定结构组织的3个以上的数据块组成。

其中数据块,PNG定义了两种类,一种是关键数据块,即标准的数据块。关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也都必须要支持这些数据块。另一种叫做辅助数据块,是可选的数据块。

PNG文件署名域

8字节的PNG文件署名域用来识别该文件是不是PNG文件。在十六进制中一般为:

89 50 4E 47 0D 0A 1A 0A

关键数据块

  • 文件头数据块IHDR

        包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。由13字节组成,格式如下表所示。

名称

字节数(byte)

说明
Width4宽度(像素)
Height4高度(像素)
Bit Depth1图像深度
Color Type1颜色类型
Compression method1压缩方法
Filter method1滤波器方法
Interlace mthod1隔行扫描方法
  • 调色板数据块PLTE

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

        调色板实际是一个彩色索引查找表,它的表项数目可以是1~256中的一个数,每个表项有3字节,因此调色板数据块所包含的最大字节数为768。调色板数据块结构下表所示。

颜色字节(Byte)说明
Red1

0 = 黑色

255 = 红色

Green1

0 = 黑色

255 = 绿色

Blue1

0 = 黑色

255 = 蓝色

  • 图像数据块IDAT

        存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。

  • 图像结束数据IEND

用来标记PNG文件或者数据流已经结束,并且必须要放在文件的尾部。

辅助数据块

  • 背景颜色数据块bKGD
  • 基色和白色度数据块cHRM
  • 图像γ数据块gAMA
  • 图像直方图数据块hIST
  • 物理像素尺寸数据块pHYs
  • 样本有效位数据块sBIT
  • 文本信息数据块tEXt
  • 图像最后修改时间数据块tIME 
  • 图像透明数据块tRNS 
  • 压缩文本数据块zTXt 

根据实际PNG图像的格式结构分析

根据Java程序得到所选择的PNG图像的16进制信息。并找到可以确定位置的文件署名域、IHDR数据块和IEND数据块进行分析

PNG文件署名域

PNG文件开头的统一的固定的文件标识位。 

IHDR数据块

第一行: 00 00 00 0D 表示IHDR数据块总长度为13字节

第二行: 49 48 44 52 为IHDR数据块标识

第三行: 00 00 06 B6 表示图像宽度1718像素

第四行: 00 00 04 8E 表示图像高度1166像素

第五行:08 表示图像色深,该图像为真彩色图像

第六行:06 表示颜色类型,该图像为带α通道数据的真彩色图像

第七行:00 表示压缩方法,该图像使用LZ77派生算法,目前规定为0

第八行:00 表示滤波器方法

第九行:00 表示隔行扫描方法,该图像使用非隔行扫描

第十行:CRC校验位

IEND数据块

 PNG文件结尾处固定的12个字节,标记PNG文件或者数据流已经结束。

参考引用

PNG格式 - GameRes.com

https://www.w3.org/TR/PNG/

《PNG文件格式》(二)PNG文件格式分析_hherima的博客-CSDN博客_png文件格式分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值