png格式 二进制存储方式

PNG文件结构分析之一(了解PNG文件存储格式)

       8字节 → PNG文件头(固定)

  再往后就是第一个数据块:数据块由4字节的数据域长度,4字节的类型码,指定长度(前面提到的数据域长度,这里IHDR就是0x0D个字节也即13字节)的数据,和4字节的CRC码组成。

  而IHDR的组成为:4字节宽度,4字节高度,1字节位深度,1字节颜色类型,1字节压缩方法,1字节滤波方法,1字节隔行扫描方法。

  • 00 00 00 0D 说明IHDR头块长为13
  • 49 48 44 52 IHDR标识
  • 00 00 00 08 图像的宽,8像素
  • 00 00 00 08 图像的高,8像素
  • 04 色深,2^4=16,即这是一个16色的图像(也有可能颜色数不超过16,当然,如果颜色数不超过8,用03表示更合适)
  • 03 颜色类型,索引图像
  • 00 PNG Spec规定此处总为0(非0值为将来使用更好的压缩方法预留),表示使压缩方法(LZ77派生算法)
  • 00 同上
  • 00 非隔行扫描
  • 36 21 A3 B8 CRC校验码

CRC就是对类型码和数据域进行计算得到的

-------------------------

(固定)8个字节 89 50 4E 47 0D 0A 1A 0A 为 png的文件头

(固定)4个字节 00 00 00 0D (即为十进制的13)代表数据块的长度为13

(固定)4个字节 49 48 44 52 (即为ASCII码的IHDR)是文件头数据块的标示(IDCH)

(可变) 13位数据块(IHDR)   
      前四个字节代表该图片的宽 00 00 00 08 
      后四个字节代表该图片的高 00 00 00 08 
      后五个字节依次为: Bit depth、ColorType、 Compression method、 Filter method、Interlace method

 (可变)剩余四字节为该png的CRC检验码 36 21 A3 B8,由从IDCH到THDR的十七位字 节进行crc计算得到。

 

posted @ 2021-12-14 14:33  笠航  阅读(2421)  评论(0编辑  收藏  举报