convert from.png -pointsize 50 -fill white -gravity center -annotate +0+0 "windows10" to.png
我量过,垂直方向上并没有居中。
convert from.png -pointsize 50 -fill white -gravity center -annotate +0+0 "windows10" to.png
我量过,垂直方向上并没有居中。
要让文字在图片上垂直居中,你需要更精确地控制 -annotate
命令中的偏移量。由于 -gravity center
只会将文字的水平中心点与图片的中心点对齐,但不会自动调整垂直位置,你需要手动计算或调整垂直方向的偏移量。
一个简单的方法是先获取图片的高度,然后根据字体大小和期望的垂直位置(如中心)来计算偏移量。不过,在命令行中直接这样做可能有些复杂,因为 ImageMagick 不直接提供查询图片尺寸的命令输出。但你可以通过一些间接的方法来实现,或者预先知道图片的尺寸。
假设你已经知道图片的高度(或可以通过其他方式获取),你可以使用 -draw
参数和 text
命令来更精确地放置文字,或者使用 -annotate
并计算垂直偏移。
这里是一个使用 -annotate
并手动设置垂直偏移的示例,假设图片高度为 H
,字体大小为 50
,你可以这样计算垂直偏移(注意,这里只是一个粗略的估计,实际可能需要根据字体和图片的具体情况进行调整):
convert from.png \
-pointsize 50 \
-fill white \
-annotate "$(echo "$(identify -format '%h' from.png) / 2 - 25" | bc)x$(echo "$(identify -format '%w' from.png) / 2" | bc)" "windows10" \
to.png
注意:上面的命令试图通过 identify
命令获取图片的高度(%h
)和宽度(%w
),然后计算文字的 x 和 y 坐标。但是,这个命令实际上并不会工作,因为 -annotate
需要的是相对于图片左上角的偏移量,而不是绝对坐标。因此,你需要手动计算这个偏移量,或者使用 -draw
命令结合 text
来更灵活地定位。
一个使用 -draw
命令的示例:
convert from.png \
-fill white \
-font Arial \
-pointsize 50 \
-draw "text $(echo "$(identify -format '%[fx:w/2]' from.png)" | bc),$(echo "$(identify -format '%[fx:h/2-25]' from.png)" | bc) 'windows10'" \
to.png
在这个命令中,%[fx:w/2]
和 %[fx:h/2-25]
分别用于计算文字的水平中心位置和垂直中心位置(向下偏移 25 像素以考虑字体大小的一半,这个值可能需要根据你的具体字体和期望的视觉效果进行调整)。注意,这里假设你已经安装了 ImageMagick,并且 identify
命令可用(它通常与 ImageMagick 一起安装)。
注意:这些命令中的 bc
工具用于处理数学运算,确保在 Shell 脚本中正确执行。如果你的环境中没有 bc
,你可能需要找到其他方法来计算这些值。
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答802 阅读✓ 已解决
2 回答3.2k 阅读