PNG文件格式分析

本文介绍了PNG图像格式,包括其无损压缩特性、与BMP格式的对比、文件结构、数据块组成以及常见的关键数据块如IHDR、sRGB、pHYs和gAMA的详细解析。通过分析PNG文件,了解了图像文件的基本结构和分析步骤。

一.PNG图像格式简介

PNG是一种无损压缩的、易传输的光栅图像文件格式, 设计目的是用来替代GIF和TIFF文件格式, 并增加一些这两种所不具有的文件特性.PNG图像文件是现在网络、媒体、游戏中最常用的文件格式之一。相比BMP格式文件, PNG格式文件显得更复杂些.它支持灰度图像、索引彩色图像和真彩图像, 并且支持额外的α通道.采样的深度范围是从1位到16位.采用的压缩算法是LZ77派生的无损数据压缩算法

二.PNG文件结构

PNG文件由文件署名域(8字节)数据块(Chunk)组成,文件署名域用来判断识别该文件是不是PNG文件,PNG包含两种类型的数据块, 一种叫关键数据块, 有4种.在每个PNG文件中都必须必须包含这四种数据块, 另一种叫做辅助数据块, 有14种。PNG文件中可以包含也可以不包含, 可以包含一种也可以同时包含多种.

文件头判断

00000000h89504E470D0A1A0A

三.每一个数据块的组成

Length:4字节, 块中数据的长度, 可以为0

Chunk Type Code (类型码) :4字节, 取值范围65~90和97~122

Chunk Data (数据块数据) :可变, 数据段

CRC:4字节, 循环冗余校验码

常见数据块

四.下面打开一张png格式照片

 文件头数据块IHDR组成

 根据打开的码流,00 00 00 0D表示的是IHDR的大小

 49 48 44 52 是Chunk Type Code

到了数据部分,00 00 05 A3表示的是图像的宽,宽1443个像素。00 00 03 BE表示的是图像的高,高958个像素。

08表示图像深度8bit

06表示带α通道数据的真彩色图像

00表示仅支持压缩方式0

00滤波器方法:5种方法都被支持

00:非隔行扫描

19 9B 09 1A:CRC循环冗余检测

SRGB数据块

00 00 00 01 数据长度为1

73 52 47 42 Chunk Type Code

00牺牲色度精度来更好地适应输出设备的图像,例如照片

AE CE 1C E9 :CRC码

物理像素尺寸数据块pHYs

 

名称字节数描述
physPixelPerUnitX4每单位多少像素,x
physPixelPerUnitY4每单位多少像素,y
UnkownUnit,Meter1

枚举类型,UnkownUnit=0,表示只定义了像素显示的比例,未定义实际像素大小。

枚举类型,Meter=1,表示定义单位为米

故00 00 00 09:数据块大小9字节

70 48 59 73:Chunk Type Code

00 00 16 25 :x轴上每米5669个像素

00 00 16 25:x轴上每米5669个像素

01:Meter=1,将单位定义为米

49 52 24 F0:CRC码

gama数据块

00 00 00 04:gama数据块长度

67 41 4D 41:Chunk Type Code

00 00 B1 8F:gama矫正信息

0B FC 61 05:CRC码

 

 

图像数据结束IEND

用来标记PNG文件或者数据流已经结束,并且必须要放在文件的尾部。根据打开不同的PNG照片,最后十二位必然出现下面的图片,猜测IEND固定格式如下

 00 00 00 00代表IEND数据长度

49 45 4E 44代表Chunk Type Code

AE 42 60 82代表CRC码

五.实验结果分析

通过本次实验,得知了分析图像文件的基本步骤。大致结构是什么可以弄懂,具体结构还要自己查阅相关文献。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值