PNG文件是高位优先(big endian)的,以字节为单位保存的图像文件。
PNG由8个字节(137 80 78 71 13 10 26 10)开头,作为PNG标志字节,后面是多个数据块。
1、块的种类
数据块分核心块(critical chunks)和辅助块(ancillary chunks)。核心块是任何PNG必备的,核心块包括信息块(IHDR)、图像数据块(IDAT)和结束块(IEND)三个块;辅助块根据单个图像的特性而要求设置的,如图形是索引图形,PLTE块(索引数据块)就需要设置,否则就不需要。
2、块本身的数据结构
值域长度(4字节),块名称(4字节),块值域数据(字节数等于值域长度),32位CRC(4字节)。
IEND的数据恒为:00 00 00 00 I E N D AE 42 60 82;
IHDR的数值:00 00 00 0D I H D R (13个字节的数据),4个字节CRC。
3、块的顺序
块在文件中有保存顺序的,IHDR第一,PLTE其后,IDAT中间,IEND最后。
有些块是指定要放在IHDR和IDAT之间,它们是:pHYs,sPLT。
有些块指定放在IHDR和PLTE之间,它们是:cHRM、gAMA、iCCP、sBIT、sRGB;
有些块指定放在PLTE和IDAT之间,它们是:bKGD、hIST 、tRNS。
其他块任意放在IHDR和IEND之间。