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

问题描述 投票:0回答:2

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

这是我想要完成的示例:在第一次运行时,

convert input.jpg output.png
生成一个
output.png
,而not已经存在,然后在第二次运行时,
convert input.jpg output.png
检测到
output.png
已经存在并且不会覆盖它。

imagemagick imagemagick-convert
2个回答
3
投票

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

bash
:

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

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

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

像这样阅读它...“要么它存在,要么(如果不存在)创建它”


0
投票

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

它将写入

output.png
,但如果文件已存在,则会创建一个带有随机 5 个字符后缀的新文件(例如,
output-CKYnY.png
,然后
output-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)
© www.soinside.com 2019 - 2024. All rights reserved.