数据压缩(五)——PNG文件格式分析
程序员文章站
2022-03-23 11:03:01
...
分析一个图像格式文件,这里选的是PNG
下面是PNG文件的组成:
PNG文件标志
8字节,89 50 4E 47 0D 0A 1A 0A
关键数据块是必须的,辅助数据块是可选的
PNG文件的数据块格式 | 长度 |
---|---|
Length(数据长度) | 4字节 |
Chunk Type Code(数据块类型码) | 4字节 |
Chunk Data(数据块数据) | Length |
CRC(循环冗余检测) | 4字节 |
文件头数据(IHDR)
13字节
typedef struct {
UINT width;
UINT height;
BYTE bit_depth;//像素深度
PNG_COLOR_SPACE_TYPE color_type;//颜色类型,0表示灰度图像
PNG_COMPR_METHOD compression_method;//压缩方法
PNG_FILTER_METHOD filter_method;//滤波器方法
PNG_INTERLACE_METHOD interlace_method;//0为隔行扫描
} IHDR_CHUNK_DATA;
可以看到,这张PNG图像文件是8bit的彩色图像。
调色板数据块(PLTE)
typedef struct {
BYTE btRed ;//1字节
BYTE btGreen;
BYTE btBlue;
} PNG_PALETTE_PIXEL;
图像数据块(IDAT)
即存储图像数据
图像结束数据块(IEND)
00 00 00 00 49 45 4E 44 AE 42 60 82
每一个PNG格式文件都是一样的
PNG辅助数据较多,支持高级别无损耗压缩,支持alpha通道透明度和伽马矫正等等,8位调色板减少了像素的彩色信息。
上一篇: web知识点整理HTML部分