如何使用 Imagemagick 的转换一次缩放然后裁剪多个区域并将每个裁剪保存在单独的文件中?

问题描述

我有一张 4K 图像,我想将其调整为 12K 图像(×3)。

然后我想将 12K 图像裁剪为 9 个单独的 4K 图像。

我知道如何运行命令来创建这些作物之一并重复该命令 9 次(位置不同)。

convert input.jpg -resize 11520x6480 \
                 -crop 3840x2160+0+0 \
        output-top-left.jpg

但是调整大小几乎需要永远,所以我希望我可以调整一次大小,然后一次性裁剪 9 次。那么...如何一次性裁剪所有 9 个区域?

解决方法

您可以裁剪成 9 个部分(Imagemagick 中使用其平铺裁剪的 3x3 图像阵列。参见 https://legacy.imagemagick.org/Usage/crop/#crop_tile

convert input.jpg -resize 300% -crop "3x3@" output.jpg

从中你会得到 output-0.jpg,output-1.jpg ... output-8.jpg

如果你想裁剪不同大小的区域,那么你可以这样做:

convert input.jpg -resize 300% -write mpr:img \
\( mpr:img -crop W1xH1+X1+Y1 +repage +write output-1.jpg \) \
\( mpr:img -crop W2xH2+X2+Y2 +repage +write output-2.jpg \) \
...
\( mpr:img -crop W9xH9+X9+Y9 +repage +write output-9.jpg \) \
null:

如果在 Windows 上,从 ( ... ) 中删除 \ 并将行尾 \s 更改为 ^s

如果在 Imagemagick 7 上使用 magick 代替 convert