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

**

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

**

PNG简述

PNG 是可携式网络图像(portable network graphics)的英文缩写。兴起于网络,目的是替代 GIF 和 JPG 格式,其支持的图像颜色非常丰富,是当今常用的图像资源格式。

PNG图像类型

PNG图片主要有三个类型,分别为 PNG 8/ PNG 24 / PNG 32

PNG 8:PNG 8中的8,其实指的是8bits(一个字节),相当于用2^8 (2的8次方)大小来存储一张图片的颜色种类,也就是说PNG 8能存储256种颜色

PNG24:PNG 24中的24,相当于3乘以8 等于 24,就是用三个8bits分别去表示 R(红)、G(绿)、B(蓝)。R,G,B的取值分别从0~255。可以存储256^3=16777216种颜色。其相比于PNG 8的色彩更丰富,同时所占空间也更大。

PNG 32:PNG 32中的32,相当于PNG 24 加上 8bits的透明颜色通道,就相当于R(红)、G(绿)、B(蓝)、A(透明)。比PNG 24多了一个A(透明)。PNG 32能表示跟PNG 24一样多的色彩,并且还支持256种透明的颜色,能表示更加丰富的图片颜色类型。

PNG图像格式

数据压缩作业——PNG图像文件格式分析_第1张图片

PNG 文件由两部分组成,分别是 PNG 文件标志数据块(chunks),数据块分为两类:关键数据块(critical chunk)和辅助数据块(ancillary chunks)
关键数据块在 PNG 文件中是必须有的,而辅助数据块是可选的。

关键数据块

数据压缩作业——PNG图像文件格式分析_第2张图片

关键数据块(critical chunks)由 4 部分组成:文件头数据块(IHDR)、调色板数据块(PLTE)、图像数据块(IDAT)和图像结束数据(IEND)

其中调色板数据块(PLTE)根据图像的色深可选。

辅助数据块

数据块名称 允许多个数据块 位置
cHRM(基色和白色点数据块) 不允许 在PLTE和IDAT之前
gAMA(图像γ数据块) 允许 在PLTE和IDAT之前
iCCP(ICCP) 不允许 在PLTE之后IDAT之前如果有iCCP,则无 sRGB
sBIT(样本有效位数据块 不允许 在PLTE和IDAT之前
sRGB(标准RPG颜色) 不允许 在PLTE之后IDAT之前
bKGD(背景颜色数据块) 不允许 在PLTE之后IDAT之前
hIST(图像直方图数据块) 不允许 在PLTE之后IDAT之前
tRNS(图像透明数据块) 不允许 在PLTE之后IDAT之前
pHYs(物理像素尺寸数据块) 不允许 不允许在IDAT之前
sPLT(建议调色板) 允许 允许在IDAT之前
tIME(图像最后修改时间数据块) 不允许 无限制
iTXt(国际文本数据) 允许 无限制
tEXt(文本信息数据块) 允许 无限制
zTXt(压缩文本数据块) 允许 无限制

PNG图像案例分析

PNG 文件的数据块格式:

数据压缩作业——PNG图像文件格式分析_第3张图片

CRC 循环冗余码生成的计算方式是通过对 Chunk Type Code 和 Chunk Data 中的数据进行计算得到的,计算方式如下:
x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1

使用visual studio的二进制编辑器打开一张PNG图片(选择“打开”中的“打开方式”)

读取PNG图片的二进制信息
数据压缩作业——PNG图像文件格式分析_第4张图片

首先其第一个数据块的8个字节为8950 4E47 0D0A 1A0A,说明是PNG类型的文件,其中 50 4E 47 对应的 ASCII值是"PNG"。

数据块分析

IHDR数据块

文件头数据块(IHDR)包含有 PNG 文件中存储的图像数据的基本信息。如图像的宽高、色深、颜色类型、压缩方式等。

一个 PNG 文件只能有一个文件头数据块

数据压缩作业——PNG图像文件格式分析_第5张图片

sRGB数据块

数据压缩作业——PNG图像文件格式分析_第6张图片
分析图像文件中的SRGB数据块中个字段的含义,sRGB的信息由一个字节组成
数据压缩作业——PNG图像文件格式分析_第7张图片
本图像文件中的sRGB信息如下:
数据压缩作业——PNG图像文件格式分析_第8张图片

gAMA数据块

数据压缩作业——PNG图像文件格式分析_第9张图片
通常在sRGB的后面同时写入gAMA数据块(有时候也会有cHRM数据块),为了使得一些不能正确解码sRGB数据块的PNG解码器正确解码。跟在sRGB数据块后面的gAMA数据块和cHRM的正确写法应该如下表所示:
数据压缩作业——PNG图像文件格式分析_第10张图片*[图片来源:11.3.3.5 sRGB Standard RGB colour space]

图像中gAMA数据块的结构分析:
数据压缩作业——PNG图像文件格式分析_第11张图片

pHYs数据块

数据压缩作业——PNG图像文件格式分析_第12张图片
物理像素尺寸数据块(pHYs)是指定像素大小或图像的宽和高的比例

物理像素尺寸数据块(pHYs) 中各字段的含义:
数据压缩作业——PNG图像文件格式分析_第13张图片

图像中的物理像素尺寸数据块(pHYs)数据块的结构分析:
数据压缩作业——PNG图像文件格式分析_第14张图片

IDAT数据块

数据压缩作业——PNG图像文件格式分析_第15张图片
数据压缩作业——PNG图像文件格式分析_第16张图片
PNG 的图像数据块(IDAT)存储图像的实际数据,相当于 BMP 图像的图像数据。PNG 可以包含多幅图像,所以 PNG 的图像数据块可能是由一幅图像的数据组成,也可能是由多幅图像的数据组成

图像中的图像数据块(IDAT)的结构分析:
数据压缩作业——PNG图像文件格式分析_第17张图片

IEND数据块

在这里插入图片描述
PNG 的图像结束数据(IEND)用来标记 PNG 文件结束,且**必须要放在文件的尾部**。
通常,PNG 图像结束数据(IEND)的十六进制数值都是一样的,如下:
00 00 00 00 49 45 4E 44 AE 42 60 82

图像文件中图像结束数据(IEND)结构分析:
数据压缩作业——PNG图像文件格式分析_第18张图片

参考文献

[1]: PNG 图像文件格式解析
[2]:PNG文件格式解析 https://blog.csdn.net/weixin_41926958/article/details/105163016
[3]: PNG图像文件格式解析_png格式解析,png解析-Web开发文档类资源-CSDN文库 https://download.csdn.net/download/foxtigermission/9874988
[4]: PNG、JPEG、BMP等几种图片格式详解(一)—— PNG - 简书 https://www.jianshu.com/p/4d8cace82028

你可能感兴趣的:(数据压缩2022,其他)