【问题标题】:Why is saving a picture twice in a row producing different binary in Paint为什么连续两次保存图片会在Paint中产生不同的二进制文件
【发布时间】:2015-06-06 06:57:59
【问题描述】:

我觉得这有点奇怪。 在 Windows 上打开 Paint(我使用的是 Windows 7)并绘制一些东西(任何东西)。 然后另存为 .png,例如名为 1.png。然后直接保存“n”个其他副本而不修改图像(2.png、3.png、..etc)。

我注意到 1.png 与 2/3/4/../n.png 的校验和不同。 与其他图像相比,1.png 也有所不同(有时更小,有时更大)。

发生了什么事?

【问题讨论】:

标签: image binary png paint binaryfiles


【解决方案1】:

文件大小的差异是由于压缩器使用的扫描线过滤器的选择。我不知道为什么您的应用程序在多次压缩图像时会使用一组不同的过滤器,但它是无害的。

Mohammad 发布的两张图片中没有时间戳。根据“pngcheck -v”,唯一的区别在于 IDAT 块的内容。 ImageMagick 计算的图像签名是相同的。两个图像都不包含时间块。

"pngcrush" 生成两个相同的图像,但文件大小更小(11493 字节)。

根据“pngtest -mv”(pngtest 包含在 libpng 发行版中),一张图片仅使用 PNG“none”过滤器,而另一张使用“none”、“sub”和“up”过滤器。

【讨论】:

  • 是的,这似乎是正确的。我仍然很好奇 Paint 为什么会这样做,但没有简单的方法可以找出答案。
【解决方案2】:

有关 PNG 格式的 Wikipedia 文章似乎暗示其中有一个时间戳。仅此一项即可。

没有解释为什么后续文件具有相同的校验和。

【讨论】:

  • 其他格式如 jpg 也会发生。标题相同,但第 1 张图片与第 2 张不同,但第 2-10 张(我连续做了 9 张)完全相同。我使用差异检查器来比较二进制文件,数据本身似乎有随机的小变化。
  • PNG 格式本身不带时间戳。它可以添加到可选的tIME 块中,但它具有固定的格式和大小,因此不会影响文件大小。
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多