欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据压缩(五)——PNG文件格式分析

程序员文章站 2022-03-23 11:03:01
...

分析一个图像格式文件,这里选的是PNG

下面是PNG文件的组成:数据压缩(五)——PNG文件格式分析

PNG文件标志

8字节,89 50 4E 47 0D 0A 1A 0A
数据压缩(五)——PNG文件格式分析

关键数据块是必须的,辅助数据块是可选的

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文件格式分析
可以看到,这张PNG图像文件是8bit的彩色图像。

调色板数据块(PLTE)

typedef struct {
BYTE btRed ;//1字节
BYTE btGreen;
BYTE btBlue;
} PNG_PALETTE_PIXEL;

图像数据块(IDAT)

即存储图像数据
数据压缩(五)——PNG文件格式分析

图像结束数据块(IEND)

00 00 00 00 49 45 4E 44 AE 42 60 82
每一个PNG格式文件都是一样的数据压缩(五)——PNG文件格式分析

PNG辅助数据较多,支持高级别无损耗压缩,支持alpha通道透明度和伽马矫正等等,8位调色板减少了像素的彩色信息。

相关标签: 数据压缩作业