如何以可重现的方式(无时间戳)使用 ImageMagick 转换?

Ste*_*ith 5 imagemagick conversion

我正在尝试在脚本中使用 ImageMagick 来转换和调整大量文件的大小以进行版本控制。我需要文件每次都在同一时间转换,这样 git 就不会提交刚刚更新时间戳的文件。不幸的是,ImageMagick 坚持为每个图像添加一个创建和修改时间戳,这使得 git 再次重新提交每个文件。

我对这个问题进行了很多搜索,并尝试了以下标志:

-define png:exclude-chunks=date
+set date:create +set date:modify
-strip
Run Code Online (Sandbox Code Playgroud)

这些都没有导致可重复的过程:

-定义 png:exclude-chunks=date

stephen@Saturn ~/test (git)-[master] % convert input.png -define png:exclude-chunks=date -resize 100x100 1.png
stephen@Saturn ~/test (git)-[master] % convert input.png -define png:exclude-chunks=date -resize 100x100 2.png
stephen@Saturn ~/test (git)-[master] % diff 1.png 2.png
Binary files 1.png and 2.png differ
stephen@Saturn ~/test (git)-[master] % cmp -l 1.png 2.png
  125  41  42
  126  67   0
  127 322 101
  128 321 101
  129  35 353
  130  64 370
Run Code Online (Sandbox Code Playgroud)

+设置日期:创建 +设置日期:修改

stephen@Saturn ~/test (git)-[master] % convert input.png +set date:create +set date:modify -resize 100x100 1.png
stephen@Saturn ~/test (git)-[master] % convert input.png +set date:create +set date:modify -resize 100x100 2.png
stephen@Saturn ~/test (git)-[master] % diff 1.png 2.png
Binary files 1.png and 2.png differ
stephen@Saturn ~/test (git)-[master] % cmp -l 1.png 2.png
  125  51  52
  126  71   0
  127 375 211
  128 260 230
  129 272 141
  130  73 360
Run Code Online (Sandbox Code Playgroud)

-跳闸

stephen@Saturn ~/test (git)-[master] % convert input.png -strip -resize 100x100 1.png
stephen@Saturn ~/test (git)-[master] % convert input.png -strip -resize 100x100 2.png
stephen@Saturn ~/test (git)-[master] % diff 1.png 2.png
Binary files 1.png and 2.png differ
stephen@Saturn ~/test (git)-[master] % cmp -l 1.png 2.png
  110  41  45
  111 241 246
  112 235 360
  113 264 160
  114 252 263
Run Code Online (Sandbox Code Playgroud)

如何使用 ImageMagick 完成可重复的转换?

Ste*_*ith 1

我已经放弃了让 ImageMagick 正常工作,转而使用 GraphicsMagick,它似乎具有 ImageMagick 的所有功能,但减去了这个时间戳错误:

stephen@Saturn ~/test (git)-[master] % gm convert -resize 100x100 input.png 1.png
stephen@Saturn ~/test (git)-[master] % gm convert -resize 100x100 input.png 2.png
stephen@Saturn ~/test (git)-[master] % diff 1.png 2.png
stephen@Saturn ~/test (git)-[master] % cmp -l 1.png 2.png
Run Code Online (Sandbox Code Playgroud)

识别显示 2 个不同的时间戳,但它是从文件属性而不是嵌入的元数据获取的,并且 diff / cmp 显示文件是相同的。