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
是否有可能以某种方式获得在图像魔术中绘制的文本的宽度?
我当前的转换命令如下所示:
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