一、简介
png是一种采用无损压缩算法的位图格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG使用从LZ77派生的无损数据压缩算法,一般应用于JAVA程序、网页或S60程序中,原因是它压缩比高,生成文件体积小。
二、特点
- 体积小
- 索引彩色模式
- 更优化的网络传输显示
- 支持透明效果
三、png文件结构
PNG图像格式文件(或者称为数据流)由一个8字节的PNG文件署名域(PNG file signature)和按照特定结构组织的3个以上的数据块(chunk)组成。
数据块分为两种类型,一种是关键数据块,这是必须的数据块;另一种是辅助数据块,是可选的数据块。关键数据块定义了四个标准数据块,每个PNG文件必须包含它们,PNG读写软件也都必须要支持这些数据块。
1. 文件署名域
8字节的PNG文件署名域用来识别该文件是不是PNG文件。该域的值是:
十六进制数: 89 50 4e 47 0d 0a 1a 0a
2. 数据块结构
名称 | 字节数 | 说明 |
---|---|---|
Length (长度) | 4字节 | 指定数据块中数据域的长度,其长度不超过( 2 31 − 1 2^{31}-1 231−1)字节 |
Chunk Type Code (数据块类型码) | 4字节 | 数据块类型码由ASCII字母(A-Z和a-z)组成 |
Chunk Data (数据块数据) | 可变长度 | 存储按照Chunk Type Code指定的数据 |
CRC (循环冗余检测) | 4字节 | 存储用来检测是否有错误的循环冗余码 |
- CRC(cyclic redundancy check)域中的值是对Chunk Type Code域和Chunk
Data域中的数据进行计算得到的。CRC具体算法定义在ISO 3309和ITU-T V.42中,其值按下面的CRC码生成多项式进行计算:
x 32 + x 26 + x 23 + x 22 +