一个PNG图片文件头和文件尾都是固定的字节来描述:
文件头:
(十六进制)89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52
文件尾:
(十六进制)00 00 00 00 49 45 4e 44 ae 42 60 82
PNG定义了两种类型的数据块,一种称为关键数据块(critical chunk),这是标准的数据块,另一种叫做辅助数据块(ancillary chunk),这是可选的数据块。关键数据块定义了四个标准数据块,每个PNG文件都必须包含他们。
每个标准数据块结构:
名称 |
字节数 |
说明 |
Length(长度) | 4字节 | 指定数据块中数据域的长度,其长度不超过 (231-1)字节 |
Chunk Type Code(数据块类型码) | 4字节 | 数据块类型码由ASCII字母(A-Z和a-z)组成 |
Chunk Data(数据块数据) | 可变长度 | 存储按照Chunk Type Code指定的数据 |
CRC(循环冗余检测) | 4字节 | 存储用来检测是否有错误的循环冗余码 |
关键数据块:
关键数据块中的4个标准数据块:
(1)文件头数据块IHDR:它包含有PNG文件中存储的图像数据的基本信息,并作为第一个数据块出现在PNG数据流中,文件头数据块由13字节组成:
49 48 44 52:IHDR标识
域的名称 |
字节数 |
说明 |
Width | 4 bytes | 图像宽度,以像素为单位 |
Height | 4 bytes | 图像高度,以像素为单位 |