header/beginning PNG 文件中的非确定性*数据

Non-deterministic* data in header/beginning of PNG files

我注意到 Gimp 从相同的 RPG 数据创建的 PNG 文件除了最开头外是相同的。此图像显示了使用 Gimp 创建的其他相同 PNG 文件的差异:

每次更改的数据是什么?它是如何编码的?有解码工具吗?你能从这些信息中学到一些东西吗?你能找出 PNG 文件何时(可能)根据此信息创建的吗?

我的印象是 PNG 文件是确定性创建的*,并且不存储解码图像所不需要的元数据。 (显然,最后一部分也不正确,因为 Gimp 将自己的名称写入文件但不询问用户(如果您将某些内容导出为 JPEG 文件,则会这样做)。)

* 我在这里使用 "deterministic" 一词来指代事物,并且仅指在给定相同输入的情况下每个 execution/export/whatever 上相同的事物。我通常会使用 "functional" 这个词(即像数学函数一样),但我担心这可能会被不知道 "functional" 在数学中意味着什么的人误解。显然,这与信息论中这个词的用法不同。

参见PNG header definition

  • tIME 存储图像上次更改的时间,所以对我来说它与您创建的文件的时间戳相同。
  • bKGD 给出默认背景色。可能是您在 Gimp 中使用的 bakcgournd 颜色,或者透明像素的颜色。
  • tEXT with key Comment and value Created with Gimp 只是默认注释。您可以在 Image>Properties 中更改图片的评论,您可以在 Edit>Preferences>Default Image
  • 中设置默认评论

当我导出同一个 PNG 两次时,我只看到 tIME 有变化。事实上,即使导出具有透明像素的 PNG,我也无法获得 bKGD 项目。导出时是否使用任何特定选项?