png-8为用8位索引值在调色盘索引颜色,故调色盘颜色最多为128中。
png-8由六块组成:
1.png文件标志,固定64字节:0x89504e47 0x0d0a1a0a
2.文件头数据块IHDR
3.调色板数据块PLTE
4.sBIT,tRNS块
5.图像数据块IDAT
6.图像结束数据IEND,固定96字节:0x00000000 0x49454e44 0xae426082
除了PNG文件标志,其中四大数据块和文件尾都是由统一数据文件结构描述:
Chunk Length:4byte
Chunk Type: 4byte
Chunk Data: Chunk Length长度
Chunk CRC: 4byte
IHDR:描述图形基本信息
图像宽:4byte
图像高:4byte
图像色深:4byte
颜色类型:1byte
压缩方式:1byte
滤波方式:1byte
扫描方式:1byte
PLTE:放置调色盘数据
循环
RED: 1byte
GREEN: 1byte
BLUE: 1byte
END
循环长度,为Chunk Length/3的长度。 Chunk Length一定为3的倍数。
tRNS:时有时无,取决是否使用透明色
循环
if(对应调色盘颜色非透明)
0xFF: 1byte
else
0x00: 1byte
END
循环长度为调色盘颜色数,相当于调色盘颜色表对应表,标识颜色是否透明。一个png文件一般只有一个透明色。
IDTA:存放图像数据,一个png可能有多个IDTA块,该区块是经过压缩,所以数据不可读
IEND:没有Chunk Data,固定96字节
png压缩
1.除六大块外所有区块过滤掉
2.文件头文件尾固定,可去
3.若清楚自己的压缩格式顺序,Chunk Type可去
1306

被折叠的 条评论
为什么被折叠?



