Image Magick 根据文本点的数量对齐文本点

Image Magick align text points based on number of text points

是否有可能以某种方式获得在图像魔术中绘制的文本的宽度?

我当前的转换命令如下所示:

convert -size 720x480 -background #000 xc:black -fill white -stroke white \ -font Arial -pointsize 18 \ -draw "text 72,370 'NavP1'" \ -font Arial -pointsize 18 \ -draw "text , ''" \ -font Arial -pointsize 18 \ -draw "text , ''" \ -font Arial -pointsize 18 \ -draw "text 370,370 'Extras'" \ -font Arial -pointsize 18 \ -draw "text 430,370 'opt'" \ -font Arial -pointsize 18 \ -draw "text 550,370 'NavP1'" \ C:\xampp\htdocs\labelText.bmp

我以编程方式执行此操作,并希望根据我拥有的导航点数量将导航点彼此居中和对齐

(我从 php 公式/数据库中获取导航点的数量)。

这是我的意思及其外观的小草图

________________________________________
|                                       |
|                                       |
|                                       |
|             navp1  navp2              |
|_______________________________________|

________________________________________
|                                       |
|                                       |
|                                       |
|         navp1  navp2  navp3           |
|_______________________________________|

我为该图片设置了固定宽度 (720px)。

因此我最少有2个导航点,最多有6个导航点。

我的想法是,如果我可以获得每个导航 (text/word) 点的宽度,我就可以正确地计算和对齐这些点。

但是我知道我找不到执行此操作的函数。

我尝试了 Mark Setchell Answer,但我的命令似乎有误

convert -debug annotate -size 720x480 -background #000 xc:black -fill white -stroke white \ -font Arial -pointsize 18 \ -draw "text 72,370 'nav1'" \ -font Arial -pointsize 18 \ -draw "text 180,370 'nav2'" \ -font Arial -pointsize 18 \ -draw "text 430,370 'nav3'" \ -font Arial -pointsize 18 \ -draw "text 550,370 'nav4'" \ C:\xampp\htdocs\test.bmp

但我收到以下错误消息:

no images defined '-background' @ error/convert.c/ConvertImageCommand/325

我不确定我是否完全理解您要查找的内容,但我认为获取字体规格可能会有所帮助。试试这个,在 "Metrics:":

开头的行中查找你想要的所有数字
convert -debug annotate -size 720x480 -background red xc:black -fill white -stroke white -font Arial -pointsize 18 -draw "text 82,370 'Nav P1'" a.png

输出

2016-06-03T09:50:12+01:00 0:00.010 0.010u 6.9.4 Annotate convert[85474]: annotate.c/RenderFreetype/1421/Annotate
  Font /Library/Fonts/Arial.ttf; font-encoding none; text-encoding none; pointsize 18
2016-06-03T09:50:12+01:00 0:00.020 0.010u 6.9.4 Annotate convert[85474]: annotate.c/GetTypeMetrics/843/Annotate
  Metrics: text: Nav P1; width: 58; height: 21; ascent: 16; descent: -4; max advance: 36; bounds: 1.95312,0  6.70312,14; origin: 59,0; pixels per em: 18,18; underline position: -4.5625; underline thickness: 2.34375
2016-06-03T09:50:12+01:00 0:00.020 0.010u 6.9.4 Annotate convert[85474]: annotate.c/RenderFreetype/1421/Annotate
  Font /Library/Fonts/Arial.ttf; font-encoding none; text-encoding none; pointsize 18