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

时间:2018-12-30 21:39:18

标签: imagemagick imagemagick-convert

convert插入图像时,ImageMagick的默认行为似乎是覆盖任何现有文件。有可能防止这种情况吗?我正在寻找与Wget的--no-clobber download option类似的东西。我经历了ImageMagick's list of command-line options,最接近的选项是-update,但这只能检测 input 文件是否已更改。

以下是我要完成的操作的一个示例:第一次运行时,convert input.jpg output.png生成一个{strong>不存在的output.png,然后在第二次运行中运行,convert input.jpg output.png检测到output.png 已经存在,并且不会覆盖它。

2 个答案:

答案 0 :(得分:1)

先测试它是否存在,假设bash

[ ! -f output.png ] && convert input.png output.png

或者稍微不那么直观,但更短:

[ -f output.png ] || convert input.png output.png

答案 1 :(得分:0)

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

它将写入 output.png 但如果文件已经存在,将创建一个带有随机 5 个字符后缀的新文件(例如,output-CKYnY.png 然后是 output-hSYZC.png 等)。< /p>

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)