PNG(Portable Network Graphics,便携式网络图形),是一种采用无损压缩算法的位图格式。其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。一般应用于JAVA程序、网页或S60程序中,原因是它压缩比高,生成文件体积小。
PNG图像格式文件由以下结构组成:
文件头/文件署名域:一个8字节的PNG文件署名域(即文件头)
数据块:按照特定结构组织的3个以上的数据块组成
实际上就是PNG文件的文件头。PNG用8字节的文件署名域来识别该文件是不是PNG文件。
文件头/文件署名域:89 50 4e 47 0d 0a 1a 0a
PNG文件中,每个数据块由4个部分组成,如下:
名称字节数说明Length (长度)4字节指定数据块中数据域的长度,其长度不超过(231-1)字节Chunk Type Code (数据块类型码)4字节数据块类型码由ASCII字母(A-Z和a-z)组成Chunk Data (数据块数据)可变长度存储按照Chunk Type Code指定的数据CRC (循环冗余检测)4字节存储用来检测是否有错误的循环冗余码2.2.2 数据块类型:PNG定义了两种类型的数据块:一种是称为关键数据块(必需的数据块),另一种是辅助数据块(可选的数据块)。
关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也都必须要支持这些数据块。
1. 关键数据块:
IHD:文件头数据块。它包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。
PLTE:调色板数据块。对于索引图像来说,调色板信息是必须的,它包含有与索引彩色图像相关的彩色变换数据,而且要放在图像数据块IDAT之前。
IDAT:图像数据块。它存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。IDAT存放着图像真正的数据信息,因此,如果能够了解IDAT的结构,我们就可以很方便的生成PNG图像。
IEND:图像结束数据。用来标记PNG文件或者数据流已经结束,必须要放在文件的尾部。
2. 辅助数据块:
比较杂,不需要全部了解透。PNG文件格式规范制定的10个辅助数据块是:
bKGD:背景颜色数据块。
cHRM:基色和白色度数据块。
gAMA:图像γ数据块。
hIST:图像直方图数据块。
pHYs:物理像素尺寸数据块。
sBIT:样本有效位数据块。
tEXt:文本信息数据块。
tIME :图像最后修改时间数据块。
tRNS:图像透明数据块。
zTXt :压缩文本数据块。
网站备案号:浙ICP备17034767号-2