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

时间:2018-10-31 02:53:08

标签: imagemagick imagemagick-convert

我裁剪了源图像中的2个区域,将它们成对合并,然后在顶部居中添加了一个标题,标题为“左向”,背景为红色。为此,我有使用源input.png和LeftRight.png作为帮助程序的代码。

这是 Input.png

input.png

这是我用来创建标题 LeftRight.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:

我用以下代码生成这2张图像:

Img-A.png

Img-B.png

如何修改此部分

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

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

1 个答案:

答案 0 :(得分:2)

您应该首先在ImageMagick中创建文本图像,然后保存到mpr:以供以后使用。看到我的第二至第四行。

请注意,您的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:


enter image description here

enter image description here

您的-bordercolor黑色在这里什么都不做,因为您尚未添加-border x。我包括了-border 2以便在裁切后的图像周围放置边框。另外,由于在此示例中仅创建了一个要删除的图像,因此您的-delete 0--1此处可以用+ delete代替。

添加:

您要求将图像调整为380x150。您可以按照以下步骤进行操作。但是请注意,原始裁剪图像的外观与380x150不同。因此,要获得380x150的精确度而又不保持宽高比或填充值而丢失数据,我必须使生成的裁剪后的图像失真,以恰好适合380x150。看看我放的位置-resize 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:


enter image description here

enter image description here

添加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:


enter image description here

enter image description here

添加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:


enter image description here

enter image description here