Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text 修改代码以添加顶部标题ImageMagick_Text_Header_Imagemagick Convert - Fatal编程技术网

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

Text 修改代码以添加顶部标题ImageMagick,text,header,imagemagick-convert,Text,Header,Imagemagick Convert,请帮帮忙。我正在使用IM 6.9.10-11 Q16 x86_64 以下坐标与输入图像中的框编号相关。convert命令的前3行用于创建 标题文本“左-右”,位于img2.png和img3.png上方 coord1="98x35+234+16" coord2="178x59+29+65" coord3="178x59+223+65" coord4="178x59+417+65" coord5="178x5

请帮帮忙。我正在使用IM 6.9.10-11 Q16 x86_64

以下坐标与输入图像中的框编号相关。convert命令的前3行用于创建 标题文本“左-右”,位于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:  
使用这个input.png

input.png

代码生成这3个图像

Img1.png

Img2.png

Img3.png

我想要的是修改当前代码,在创建这3个图像之前(写之前),为它们中的每一个添加一个顶部标题文本 为了使Img1、Img2和Img3最终如下所示:

所需Img1

所需Img2

所需Img3

我想我需要首先在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" \) \

感谢您的帮助。

在ImageMagick中,您可以在括号中的任何位置创建图像,并使用-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:  

结果是:


不幸的是,在IM6中,除非你提前计算,否则无法知道你的彩色图像会有多宽,从而使标题具有相同的宽度。在IM7中,它可以在命令行中在线完成。所以在这里,我把它的宽度和两张左右模糊的图片一样。您可以通过更改-size 250x36中的宽度值来更改宽度。

太好了。再次感谢你。我看到您没有使用“mpr”来创建顶部标题,那么创建左右标题也可以用同样的方法吗?我是说不用mpr?另外,什么是
-delete 0--1
以及为什么有时使用+或-gravity?需要mpr:以避免重复读取输入图像-delete 0--1表示删除命令序列中的所有前一个图像0是第一个图像,-1是最后一个图像。所以0--1表示从第一个到最后一个-设置要使用的重力时需要重力+重力用于将重力重置为其默认值。我明白了。非常感谢您的帮助、解释和信息共享。