可以防止 ImageMagick 覆盖现有图像吗?

oro*_*mzy 6 imagemagick imagemagick-convert

convert读取图像时,ImageMagick 的默认行为似乎是覆盖任何现有文件。有可能阻止这种情况吗?我正在寻找类似于 Wget 的--no-clobber 下载选项。我已经浏览了ImageMagick 的命令行选项列表,我能找到的最接近的选项是-update,但这只能检测输入文件是否已更改。

这是我想要完成的示例:在第一次运行时,convert input.jpg output.png生成一个output.png尚不存在的值,然后在第二次运行时,convert input.jpg output.png检测到output.png 已存在的值并且不覆盖它。

Mol*_*mby 0

这样的事情能解决你的问题吗?

它将写入,output.png但如果文件已存在,则会创建一个带有随机 5 个字符后缀的新文件(例如output-CKYnY.pngthenoutput-hSYZC.png等)。

convert input.jpg -resize 50% $(if test -f output.png; then echo "output-$(head -c5 /dev/urandom | base64 | tr -dc 'A-Za-z0-9' | head -c5).png"; else echo "output.png"; fi)
Run Code Online (Sandbox Code Playgroud)

  • 要生成随机名称,您可以使用“mktemp output-XXXXX.png”而不是“/dev/urandom”。这更容易,并且还可以检查随机名称是否未使用。 (2认同)