将 header 文本添加到合并区域 ImageMagick

Add header text to merged regions ImageMagick

我从源图像裁剪 2 个区域,将它们成对合并,然后在顶部居中添加一个 header,上面写着 "Left Right",背景为红色。为此,我有这段代码使用源 input.png 和 LeftRight.png 作为助手。

这是Input.png

这是我用来创建 header 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 张图像:

如何修改这部分

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

以便在不使用辅助图像 LeftRight.png ?

的情况下添加具有相同特征的 header 文本 "Left Rigth"

您应该先在 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 在这里可以简单地替换为 +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:


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

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

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: