我一直在查看imagemagick的文档,并查看其他人制作的脚本示例,但是我无法使它正常工作。
目标是使imagemagick缩放,裁切并保存(将尺寸附加到文件名中)多个具有各种纵横比的调整大小的图像。
例如,包含Image1.png和Image2.png的文件夹将导致:
Image1_1571x2646.png, Image1_1350x2150.png, Image1_1281x2039.png
Image2_1571x2646.png, Image2_1350x2150.png, Image2_1281x2039.png
视觉辅助:
上面的动画显示了最简单的示例:1:1正方形,垂直矩形和水平矩形。
图像应缩放以适合矩形的最长尺寸,然后裁剪所有剩余的像素。缩放和裁剪应相对于图像中心进行。
这是我到目前为止(使用macOS Terminal)所拥有的,但是它不起作用:
convert *.png -path /Users/user/Resized \
\( +clone -resize "1571x2646^” -gravity center -crop 1571x2646+0+0 +repage resultimage -write 1571x2646.png +delete \) \
\( +clone -resize "1350x2150^” -gravity center -crop 1350x2150+0+0 +repage resultimage -write 1350x2150.png +delete \) \
-resize "1281x2039^” -gravity center -crop 1281x2039+0+0 +repage resultimage 1281x2039.png
我不确定我应该使用 mogrify 还是 convert ,但是如果我使用mogrify clone ,则会出现错误。我也不确定是否需要将多行指令放入.sh文件或其他内容。 ^ 表示应优先处理的维度(较大的维度)。我相信重心应该相对于图像中心保持缩放和裁剪。许多谜团。任何帮助表示赞赏。
答案 0 :(得分:1)
对于Imagemagick,必须使用convert。 Mogrify无法处理括号过程和克隆,也无法为给定输入编写多个输出。 ^是正确的方式,-重心是正确的。您将必须遍历每个输入图像。我认为您无法使用通配符通过这种类型的命令一次处理多个图像。我认为-path仅用于移植。
我会在每个输入图像上写一个循环(bash unix语法):
cd
cd /Users/user/Resized/
list=`ls`
for img in $list; do
name=`convert "$img" -format "%t" info:`
convert "$img" \
\( -clone 0 -resize "1571x2646^" -gravity center -crop 1571x2646+0+0 +repage +write ${name}_1571x2646.png +delete \) \
\( -clone 0 -resize "1350x2150^" -gravity center -crop 1350x2150+0+0 +repage +write ${name}_1350x2150.png +delete \) \
\( -clone 0 -resize "1281x2039^" -gravity center -crop 1281x2039+0+0 +repage +write ${name}_1281x2039.png +delete \) \
null:
done
以上假设您输入的图像名称中没有空格。
我已经从+ clone更改为-clone 0,因为我不确定是否将宽高比从输出更改为输出是否会导致问题。您可以尝试两种方式,看看哪种看起来最好。