如何使用 imagemagick cli 处理多个元素?

How to handle multiple elements with imagemagick cli?

我们需要将“信息栏”添加到数千个图像文件中。大约一个星期以来,我一直在尝试学习 imagemagick,但我就是想不出这么多元素,所以我想在这里寻求帮助。

我想到了“-/+追加”元素并在它们之间交换,但是当涉及到 3x3 矩阵单元格和 text/image 混合时,我就是做不到。例如,我可以添加 3 行并在其旁边添加一列,但我无法进入 'appending 2 more rows together then put them as a column block again' 的下一步,因为当我尝试时,所有这些添加都在整个图像的右侧或底部。 . 好吧,当你看到我下面的简短图片时你就会明白了..

magick.exe -size 150x100 -gravity center caption:"txt2" caption:"txt3" caption:"txt4" \
 -append -size 94x294 xc:white -border 3 -swap 0,1 \
 +append outoutout.jpg

仅供参考,rows/columns 中的 height/width 是否只是例如不重要.. MSPaint 技能来了:

您必须使用括号处理分别创建每个部分。然后,如果你想适当地附加它们。或者,您可以创建背景图像并合成...-将每个图像合成到正确的位置。

这是使用第二种方法的 ImageMagick 示例。

Unix 语法:

magick -size 400x400 xc:white \
\( barn.jpg -crop 400x200+0+0 +repage \) \
    -geometry +0+0 -compose over -composite \
\( -size 100x200 xc:white -shave 5x5 -bordercolor black -border 5 \) \
    -gravity northwest -geometry +0+200 -compose over -composite \
\( -size 100x200 -background white -gravity center -fill black \
    -font Candice label:"Text1\n\nText2\n\nText3" \) \
    -gravity northwest -geometry +100+200 -compose over -composite \
\( -size 100x200 -background skyblue -gravity center -fill red \
    -font Arial label:"First_line\n\n\nSecond_line" \) \
    -gravity northwest -geometry +300+200 -compose over -composite \
result.png

参见示例:

parenthesis processing

appending

convert ... -composite