修改代码以添加顶部标题ImageMagick

时间:2018-11-13 20:45:19

标签: text header imagemagick-convert

请在这里提供一些帮助。我正在使用IM 6.9.10-11 Q16 x86_64

以下相关坐标与输入图像中的框号相关。 convert命令的前三行创建一个 在img2.png和img3.png上方的标题文本“左-右”

coord1="98x35+234+16" 
coord2="178x59+29+65"
coord3="178x59+223+65"
coord4="178x59+417+65"
coord5="178x59+611+65"
coord6="239x147+35+179" 
coord7="239x147+416+179"
coord8="239x147+73+349"
coord9="239x147+401+353"    

convert \
\( -size 125x36 xc:"#00137F" -fill white -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Left" \) \
\( -size 125x36 xc:"#00137F" -fill white -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Right" \) \
 -background white +smush +2 -write mpr:leftright +delete +gravity \
 \
input.png +repage -write mpr:img -delete 0--1 -background none -bordercolor "#870000"  \
\( mpr:img -crop $coord2 \)  \
\( mpr:img -crop $coord3 \)  \
\( mpr:img -crop $coord4 \)  \
\( mpr:img -crop $coord5 \)  \
-border 4 \( -clone 0,1 -smush -4 \) \( -clone 2,3 -smush -4 \) -delete 0-3 -gravity center +smush -4 +gravity \
\( mpr:img -crop $coord1 -border 4 \) +swap -gravity center -smush +12 +gravity -write Img1.png \
 \
\( \( mpr:img -crop $coord6 +repage -border 4 \) \( mpr:img -crop $coord7 +repage -border 4 \) \
   +smush +6 mpr:leftright +swap -gravity center -smush +11 +gravity  -write Img2.png  \) -delete 0--1 \
\
\( \( mpr:img -crop $coord8 +repage -border 4 \) \( mpr:img -crop $coord9 +repage -border 4 \) \
   +smush +6 mpr:leftright +swap -gravity center -smush +11 +gravity  -write Img3.png  \) null:  

使用this input.png

input.png

enter link description here

代码生成这3张图片。

Img1.png

enter link description here

Img2.png

enter link description here

Img3.png

enter link description here

我想要的是修改当前代码,以便在创建这三个图像之前将顶部标题文本添加到这三个图像中的每一个(在-write之前) 为了使Img1,Img2和Img3最终像这样:

所需的Img1

enter link description here

所需的Img2

enter link description here

所需的Img3

enter link description here

我认为我需要首先在convert命令的开头创建图像,类似这样,但是我不知道如何适应它并将这些行插入当前代码中。

\( -size 500x36 xc:"#757575" -fill white -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Five boxes" \) \
\( -size 500x36 xc:"#757575" -fill white -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Blue boxes" \) \
\( -size 500x36 xc:"#757575" -fill white -font Calibri-Bold -pointsize 32 -gravity center -annotate +0+0 "Green boxes" \) \

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在ImageMagick中,您可以在括号内的任何位置创建图像,并使用-swap ...(或最后两个+ swap)将其重新放置。这样您的命令将变为:

coord1="98x35+234+16" 
coord2="178x59+29+65"
coord3="178x59+223+65"
coord4="178x59+417+65"
coord5="178x59+611+65"
coord6="239x147+35+179" 
coord7="239x147+416+179"
coord8="239x147+73+349"
coord9="239x147+401+353"    

convert \
\( -size 125x36 xc:"#00137F" -fill white -font Calibri-Bold.ttf -pointsize 32 -gravity center -annotate +0+0 "Left" \) \
\( -size 125x36 xc:"#00137F" -fill white -font Calibri-Bold.ttf -pointsize 32 -gravity center -annotate +0+0 "Right" \) \
-background white +smush +2 -write mpr:leftright +delete +gravity \
\
input.png +repage -write mpr:img -delete 0--1 -background none -bordercolor "#870000"  \
\( mpr:img -crop $coord2 \)  \
\( mpr:img -crop $coord3 \)  \
\( mpr:img -crop $coord4 \)  \
\( mpr:img -crop $coord5 \)  \
-border 4 \( -clone 0,1 -smush -4 \) \( -clone 2,3 -smush -4 \) -delete 0-3 -gravity center +smush -4 +gravity \
\( mpr:img -crop $coord1 -border 4 \) +swap -gravity center -smush +12 +gravity \
\( -size 250x36 xc:gray -fill white -font Calibri-Bold.ttf -pointsize 32 -gravity center -annotate +0+0 "Five Boxes" \) \
+swap -background none -gravity center -smush +20 +gravity -write Img1.png \
\
\( \( mpr:img -crop $coord6 +repage -border 4 \) \( mpr:img -crop $coord7 +repage -border 4 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +11 +gravity  \
\( -size 250x36 xc:gray -fill white -font Calibri-Bold.ttf -pointsize 32 -gravity center -annotate +0+0 "Blue Boxes" \) \
+swap -background none -gravity center -smush +20 +gravity -write Img2.png  \) -delete 0--1 \
\
\( \( mpr:img -crop $coord8 +repage -border 4 \) \( mpr:img -crop $coord9 +repage -border 4 \) \
+smush +6 mpr:leftright +swap -gravity center -smush +11 +gravity  \
\( -size 250x36 xc:gray -fill white -font Calibri-Bold.ttf -pointsize 32 -gravity center -annotate +0+0 "Green Boxes" \) \
+swap -background none -gravity center -smush +20 +gravity -write Img3.png  \) null:  


结果是:

enter image description here

enter image description here

enter image description here

不幸的是,在IM 6中,除非提前计算,否则无法知道模糊的彩色图像将使标题具有相同的宽度。在IM 7中,可以在命令行中在线完成。因此,在这里我将其宽度设置为与左右两个模糊图像的宽度相同。您可以通过在-size 250x36中更改宽度值来更改宽度。