You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PNG格式各区块后四字节含义及区块间剩余字节解析咨询

PNG格式相关问题解答

问题背景

我正以如下示例图片研究PNG格式:
示例PNG图片

另一张PNG图片的十六进制表示如下:
PNG十六进制表示

具体问题

在IHDR-sRGB区块(对应字节:0f d8 e5 b7 00 00 00 01)与PLTE-IDAT区块(对应字节:01 a3 15 58 00 00 00 0c)之间各存在8字节数据,若假设其中4字节为CRC字节,请问剩余4字节是什么?同时想了解PNG中每个区块后的4字节是什么?


解答

1. 剩余4字节的含义

PNG的区块遵循固定结构:[4字节长度字段] + [4字节区块类型码] + [N字节区块数据] + [4字节CRC校验码]

你提到的这两段8字节数据,本质是前一个区块的CRC校验码 + 后一个区块的长度字段:

  • 以0f d8 e5 b7 00 00 00 01为例:0f d8 e5 b7是IHDR区块的CRC校验码,00 00 00 01是sRGB区块的长度字段(表示sRGB区块的数据部分仅占1字节)
  • 以01 a3 15 58 00 00 00 0c为例:01 a3 15 58是PLTE区块的CRC校验码,00 00 00 0c是IDAT区块的长度字段

所以剩余的4字节就是下一个区块的长度字段,用来标识该区块数据部分的字节数(不含长度、类型码、CRC本身)。

2. PNG区块末尾的4字节是什么

每个区块最后的4字节是CRC-32校验码,它是对区块的「类型码」和「数据部分」(不包含开头的4字节长度字段)进行CRC-32算法计算得到的结果。作用是验证区块的完整性——接收方可以重新计算对应部分的CRC值,与区块末尾的字节对比,判断区块是否被篡改或在传输中出现错误。


内容的提问来源于stack exchange,提问作者Денис Трофимов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:22:42