在单个ImageMagick或Convert命令中裁剪和合并3个图像

时间:2017-08-16 18:19:03

标签: merge imagemagick crop imagemagick-convert

想要从 picture.jpg 裁剪3个区域,并将这3个图像合并为一个。

是否可以在单个imagemagick或convert命令中裁剪和合并这3个图像? 如果在单个命令中不可能如何在单独的命令中合并3个图像?

我的目标是避免在单个命令中保存时间图像。

我使用以下命令获取每个区域。

convert picture.jpg -crop 212x32+717+190 -resize 318x48! out1.jpg
convert picture.jpg -crop 440x231+20+251 -resize 660x347! out2.jpg
convert picture.jpg -crop 440x231+490+251 -resize 660x347! out3.jpg
  • 我想要获得的输出图像的大小为1336x411像素。
  • 最终输出图像中每个裁剪图像的位置为:

    out1.jpg位于(x,y)=(509,0) out2.jpg位于(x,y)=(0,64) out3.jpg位于(x,y)=(676,64)

picture.jpg picture.jpg

output.jpg output.jpg

1 个答案:

答案 0 :(得分:2)

使用IM的“转换”,您可以读取原始图像,然后在括号内“旋转”几次以处理输入图像的副本。在括号内,你可以按照你想要的方式“-crop”每个副本,并“-repage”它们,这样每个副本都包含完成的画布大小和位置信息。之后,您可以“删除”原始输入,将“剩余的三个图像”“平滑”到一个画布上,然后写入输出。

在Windows命令提示符下,该命令将如下所示。

convert input.jpg ^
   ( -clone 0 -crop 212x32+717+190 -resize 318x48! -repage 1336x411+509+0 ) ^
   ( -clone 0 -crop 440x231+20+251 -resize 660x347! -repage 1336x411+0+64 ) ^
   ( -clone 0 -crop 440x231+490+251 -resize 660x347! -repage 1336x411+676+64 ) ^
   -delete 0 -flatten output.png

如果您在* nix系统上运行,则需要使用反斜杠“\”替换那些连续的行符号“^”,并使用反斜杠“\(... \)”来转义括号。< / p>