0x1. 组成
PNG图像格式文件(或者称为数据流)
- 由一个8字节的PNG文件署名(PNG file signature)域 ( 89 50 4e 47 0d 0a 1a 0a
- 按照特定结构组织的3个以上的数据块(chunk)组成。
0x2. 文件署名
前8个字节为文件署名域
![](http://joychou-blog.stor.sinaapp.com/356844115.png)
0x3. 数据块
PNG定义了两种类型的数据块,
一种是称为关键数据块(critical chunk),这是标准的数据块
另一种叫做辅助数据块(ancillary chunks),这是可选的数据块。
每个数据块都下图所示的的4个域组成:
![](http://joychou-blog.stor.sinaapp.com/2029766373.png)
关键数据块有
![](http://joychou-blog.stor.sinaapp.com/4058704749.png)
0x4. IHDR文件头数据块
IHDR文件头数据块的数据分别含义是
第一个域:长度(0xD),即数据块长度为13个字节
第二个域:数据块的名称(IHDR)
第三个域:数据块的数据
第四个域:数据块+数据块名称 的CRC32校验值
用winhex的GREP Hex复制成\x形式的,很方便啊。
0x5. IEND数据块
第一个表示数据块长度为0,即没有数据。
第二个表示数据块名称为IEND
第三个表示 数据块+数据块名称 的CRC32校验值