将标题文本添加到合并区域ImageMagick

将标题文本添加到合并区域ImageMagick,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,我从源图像裁剪两个区域,将它们成对合并,然后添加一个顶部居中的标题,上面写着红色背景的“左-右”。为此,我有一段代码,它使用源input.png和LeftRight.png作为助手 这是输入。png 这是我用来创建标题LeftRight.png 迄今为止的守则: convert input.png \ -write mpr:img -delete 0--1 -background none -bordercolor black \  \( \( mpr:img -crop 240x151+

我从源图像裁剪两个区域,将它们成对合并,然后添加一个顶部居中的标题,上面写着红色背景的“左-右”。为此,我有一段代码,它使用源input.png和LeftRight.png作为助手

这是输入。png

这是我用来创建标题LeftRight.png

迄今为止的守则:

convert input.png \ 
-write mpr:img -delete 0--1 -background none -bordercolor black \ 
\( \( mpr:img -crop 240x151+462+176 \) \   ( mpr:img -crop 240x151+87+257  \) \ 
+smush +6 LeftRight.png +swap -gravity   center -smush +3 +gravity -write Img-A.png    \) -delete 0--1 \ 
\( \( mpr:img -crop 240x151+468+542 \) \( mpr:img -crop 240x151+140+624 \) \ 
+smush +6 LeftRight.png +swap -gravity center -smush +3 +gravity -write Img-B.png \) null:
我使用以下代码生成这两幅图像:

如何修改此部分

+smush +6 LeftRight.png +swap -gravity center -smush +3 +gravity -write

要添加具有相同特征的标题文本“Left Rigth”,而不使用辅助图像LeftRight.png

您应该首先在ImageMagick中创建文本图像,然后保存到mpr:以便以后使用。见我的第2-4行

请注意,您的input.png已更改为JPG

convert \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "LEFT" \) \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "RIGHT" \) \
-background white +smush +2 -write mpr:leftright +delete +gravity \
input.jpg +repage -write mpr:img -delete 0--1 -background none -bordercolor black \
\( \( mpr:img -crop 240x151+462+176 +repage -border 2 \) \( mpr:img -crop 240x151+87+257 +repage -border 2 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-A.png \) -delete 0--1 \
\( \( mpr:img -crop 240x151+468+542 +repage -border 2 \) \( mpr:img -crop 240x151+140+624 +repage -border 2 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-B.png \) null:

您的-bordercolor black在这里不起任何作用,因为您没有添加-border x。我已经包括了-border 2,用于在裁剪的图像周围放置边框。此外,您的-delete 0--1也可以在这里替换为simply+delete,因为在本例中,只创建了一个要删除的图像

补充:

您要求将图像大小调整为380x150。你可以这样做。但请注意,原始裁剪图像的外观与380x150不同。因此,为了在不丢失数据的情况下通过保持纵横比或填充来精确获得380x150,我必须扭曲生成的裁剪图像,使其完全适合380x150。看看我放在哪里-调整380x150!的大小!。“!”告诉ImageMagick扭曲图像,使其完全适合您的380x150

convert \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "LEFT" \) \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "RIGHT" \) \
-background white +smush +2 -write mpr:leftright +delete +gravity \
input.jpg +repage -write mpr:img -delete 0--1 -background none -bordercolor black \
\( \( mpr:img -crop 240x151+462+176 +repage -resize 380x150! -border 2 \) \( mpr:img -crop 240x151+87+257 +repage -resize 380x150! -border 2 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-A.png \) -delete 0--1 \
\( \( mpr:img -crop 240x151+468+542 +repage -resize 380x150! -border 2 \) \( mpr:img -crop 240x151+140+624 +repage -resize 380x150! -border 2 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-B.png \) null:

补充2:

如果要调整附加的裁剪图像对的大小,请将“调整大小”放在附加两个图像的两个+smush 6之后。再次注意,结果可能会被扭曲,因为我强迫它符合确切的大小。如果不希望失真,则必须指定图像是要裁剪还是填充,还是只适合宽度或高度

convert \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "LEFT" \) \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "RIGHT" \) \
-background white +smush +2 -write mpr:leftright +delete +gravity \
input.jpg +repage -write mpr:img -delete 0--1 -background none -bordercolor black \
\( \( mpr:img -crop 240x151+462+176 +repage -border 2 \) \( mpr:img -crop 240x151+87+257 +repage -border 2 \) \
+smush +6 -resize 380x150! mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-A.png \) -delete 0--1 \
\( \( mpr:img -crop 240x151+468+542 +repage -border 2 \) \( mpr:img -crop 240x151+140+624 +repage -border 2 \) \
+smush +6 -resize 380x150! mpr:leftright +swap -gravity center -smush +3 +gravity -write Img-B.png \) null:

补充3:

如果要调整两个最终输出图像的大小,请在写入这些图像之前使用resize命令

convert \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "LEFT" \) \
\( -size 159x24 xc:"#7f0000" -fill white -font ubuntu -pointsize 18 -gravity center -annotate +0+0 "RIGHT" \) \
-background white +smush +2 -write mpr:leftright +delete +gravity \
input.jpg +repage -write mpr:img -delete 0--1 -background none -bordercolor black \
\( \( mpr:img -crop 240x151+462+176 +repage -border 2 \) \( mpr:img -crop 240x151+87+257 +repage -border 2 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +3 +gravity -resize 380x150! -write Img-A.png \) -delete 0--1 \
\( \( mpr:img -crop 240x151+468+542 +repage -border 2 \) \( mpr:img -crop 240x151+140+624 +repage -border 2 \) \
+smush +6  mpr:leftright +swap -gravity center -smush +3 +gravity -resize 380x150! -write Img-B.png \) null:


您好,fmw42,谢谢您的回答。它似乎工作得很好。很高兴每次都能从专家那里学到一些东西。我添加了2x2边框,但输出中仍然没有边框。我确实喜欢这个
-背景无-边框颜色黑色-边框2x2
我已经编辑了我的答案以包含黑色边框。在前面的示例中,我没有注意到黑色边框。抱歉疏忽了。fmw42没有问题。这真是太棒了。非常感谢!您好,fmw42,生成的图像大小为494x182。应在代码中的何处添加“-resize 380x150”?要更改为每个图像的大小?谢谢
@Ger Cas
查看我对先前答案的补充。如果不想扭曲裁剪后的图像,则必须告诉我在调整尺寸时是希望裁剪后的图像居中裁剪到您的尺寸,还是在调整尺寸时进行填充。