Data structures PNG文件头/开头的非确定性*数据

Data structures PNG文件头/开头的非确定性*数据,data-structures,graphics,png,metadata,gimp,Data Structures,Graphics,Png,Metadata,Gimp,我注意到Gimp从相同的RPG数据创建的PNG文件除了一开始就完全相同。此图显示了使用Gimp创建的其他相同PNG文件的差异: 每次改变的数据是什么?它是如何编码的?有解码的工具吗?你能从这些信息中学到一些东西吗?例如,你能找出PNG文件是什么时候(可能)由这些信息创建的吗 我的印象是PNG文件是确定创建的,不存储解码图像所不需要的元数据。(显然,最后一部分也不正确,因为Gimp将自己的名称写入文件中,但不询问用户(如果将某个文件导出为JPEG文件,则会询问用户)。) *我在这里使用“确定性”

我注意到Gimp从相同的RPG数据创建的PNG文件除了一开始就完全相同。此图显示了使用Gimp创建的其他相同PNG文件的差异:

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

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

*我在这里使用“确定性”一词来指代事物,仅指在每次执行/导出/任何给定相同输入时相同的事物。我通常会使用“函数”一词(例如,像数学函数),但我担心这可能会被不知道“函数”在数学中的含义的人误解。显然,这与信息论中这个词的用法不同。

参见

  • tIME
    存储上次更改图像的时间,因此对我来说,它与您创建的文件的时间戳相同
  • bKGD
    提供默认背景色。可能是Gimp中使用的bakcgournd颜色,或透明像素的颜色
  • 带有键
    注释的
    tEXT
    和使用Gimp创建的值
    只是默认注释。您可以在
    image>Properties
    中更改图像的注释,也可以在
    Edit>Preferences>default image

当我两次导出相同的PNG时,我只看到时间的变化。事实上,我无法获得
bKGD
项目,即使在导出带有透明像素的PNG时也是如此。导出时您是否使用了任何特定选项?

我只是取了一个时间戳(Unix时间)(
1496679009
)并将其转换为十六进制:
593585E5
我甚至没有看到diff中出现任何
59
(在发布此问题之前不久,我创建了第二个图像)。如何解释diff中的数据以找到创建PNG图像的时间?在导出图像时,我没有选择任何特殊选项。我只是按Ctrl+Shift+E导出图像(不确定是否一直按Shift键),有时输入文件名,然后按Enter键。除了一个允许我画箭头和在码头上移动的东西的脚本之外,我的Gimp安装和配置只是官方主服务器上默认Ubuntu 16.04存储库的最新库存版本。我的Gimp版本是2.8.16,但我不确定Ubuntu是否提供带有特殊设置或类似设置的Gimp。(这是在DuckDuckGo上输入png格式规范时出现的第一件事)。时间不是以秒的形式存储的,而是以Y/M/D/H/M/S字节的形式存储的。谢谢!当我在谷歌上搜索时,我只得到了一些没有帮助的结果。你可以使用“
pngcheck-v file.png
”来获得更多关于png块的信息。@Glenranders Pehrson谢谢!