无需登录 数据私有 本地保存

PNG 块检查器 - 查看图片元数据与隐藏信息

139
0
0
0

IHDR(图像头部块)

IHDR 是 PNG 文件的第一个块,包含图像的基本属性信息。它存储了图像的宽度、高度、位深度、颜色类型、压缩方法、滤波器类型和隔行扫描方法。IHDR 块的数据长度固定为 13 字节,是每个合法 PNG 文件必须包含的关键块。

IDAT(图像数据块)

IDAT 块存储经过 zlib 压缩的实际像素数据。一个 PNG 文件可以包含一个或多个 IDAT 块,编码器通常将图像数据分割为多个块以便流式处理。所有 IDAT 块的数据在解压后会拼接在一起,形成完整的压缩图像数据流。大量 IDAT 块是正常现象,不代表隐藏信息。

IEND(图像结束块)

IEND 标记 PNG 文件的结束,其数据长度固定为 0 字节。按照 PNG 规范,IEND 应当是文件的最后一个块。如果在 IEND 之后发现额外数据,说明文件可能被修改过,这种手法常被用于在 PNG 文件末尾隐藏其他类型的数据。

tEXt(文本数据块)

tEXt 块用于存储未压缩的键值对文本数据。常见的键名包括 Author(作者)、Description(描述)、Comment(注释)、Creation Time(创建时间)等。用户也可以自定义键名来存储任意文本信息,这使得 tEXt 成为 PNG 文件中最常见的元数据存储方式。

zTXt(压缩文本块)

zTXt 块与 tEXt 功能类似,但使用 zlib 压缩存储文本数据。这种方式适合存储较大的文本内容,可以在节省文件空间的同时保留完整的键值对结构。解码时需要先进行 zlib 解压,再按 UTF-8 编码读取文本。

iTXt(国际化文本块)

iTXt 是 PNG 1.2 引入的国际化文本块,支持语言标签和 UTF-8 编码。它由三部分组成:键名、语言标识和翻译文本。iTXt 还可以选择是否使用 zlib 压缩文本内容。相比 tEXt 和 zTXt,iTXt 提供了更好的多语言支持能力。

tIME(最后修改时间块)

tIME 块记录图像最后被修改的时间,包含年、月、日、时、分、秒共 7 个字节。该块只能出现一次且必须位于 IHDR 之后、IDAT 之前。tIME 信息对于追踪图片的编辑历史有一定参考价值。

CRC32 校验码

每个 PNG 块的末尾都附有 4 字节的 CRC32 校验码,用于验证块数据的完整性。CRC 基于块类型和数据计算得出。如果校验失败,说明数据可能在传输或存储过程中损坏,也可能被人为篡改。通过 PNG 块检查器可以快速检测所有块的 CRC 校验状态。

私有块与未知块

PNG 规范允许使用以小写字母开头的块类型作为私有块,用于存储自定义数据。工具在解析时会将无法识别的块类型标记为未知或可疑,帮助用户发现文件中的非标准结构。这些私有块可能包含有用的元数据,也可能被用于隐藏信息。