png格式文件
头部hex: 89 50 4E 47 0D 0A 1A 0A
notepad++ 打开 添加 ‰PNG头
文件头数据块IHDR(header chunk):它包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。文件头数据块由13字节组成(4字节图像宽度以像素为单位+4字节图像高度以像素为单位+1字节图像深度2的3次方或者2的4次方+3个字节00压缩方法00滤波器方法和00非隔行扫描或者01Adam7开发的7遍隔行扫描方法) *
png格式主要由六大块组成:文件头、IHDR块、PLTE块、tRNS块、IDAT块、文件尾
(固定)八个字节文件头一般是 8950 4E47 0D0A 1A0A
而IHDR块是png中用来描述图片的基本信息,格式是4字节Chunk_Length、4字节Chunk_Type、13字节Chunk_Data、4字节Chunk_CRC
(固定)Chunk_Length:内容一般是13,决定了Chunk_Data的大小
(固定)Chunk_Type:内容为49484452,代表"IHDR"
(可变)Chunk_Data:4字节Width,4字节Hegiht,1字节BitDepth,1字节ColorType,1字节CompressionMethod,1字节FilterMethod,1字节InterlaceMethod
(可变)Chunk_CRC:把Chunk_Type和Chunk_Data合起来进行CRC校验
调色板数据块PLTE:在IDAT之前 可选
图像数据块IDAT(image data chunk):它存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。 hex:49 48 44 52
图像结束数据IEND(image trailer chunk):它用来标记PNG文件或者数据流已经结束,并且必须要放在文件的尾部。 hex: 49 45 4E 44
结尾hex:00 00 00 00 49 45 4E 44 AE 42 60 82
....IEND?B`?