使用 imagemagick 从一个来源进行多次转换

Multiple converts from one source using imagemagick

是否可以有一个来源,并从中获得 2 种不同配置的处理图像? (而不是两次读取源图像)?

类似于

convert input.jpg -resize 300 output1.jpg -resize 600 output2.jpg

当然可以,像这样使用中间的 -write,然后先做大的:

convert input.jpg -resize 600 -write im600.jpg -resize 300 im300.jpg

或者,如果您想对每个操作重新开始:

convert input.png \
  \( +clone -resize 300 -write result300.jpg \) \
  \( +clone -resize 600 -write result600.jpg \) null:

如果使用 GraphicsMagick,我不确定是否有比以下更好的方法:

#!/bin/bash
{ echo convert input.png mpr:orig; 
  echo convert mpr:orig -resize 300 result300.jpg;
  echo convert mpr:orig -resize 600 result600.jpg; } | gm batch -prompt off

这是一个略有不同的版本,它只调用了 convert 两次:

#!/bin/bash
cat - <<EOF | gm batch -prompt off
convert input.png -write mpr:orig -resize 300 result300.jpg
convert mpr:orig -resize 600 result600.jpg
EOF