无法使用ImageMagick使文本适合图像

达维德·奇秋

我需要使文字适合图像。我的图片大小不同,因此无法设置恒定的磅值。

我的命令看起来像这样

convert 
    -fill white
    -font Winter Calligraphy
    -size `${options.width}x${options.height}`
    label: KJHGFD
    test.gif

在输出中,您可以在图片上方看到裁剪的部分。

输出: 输出图像

  • 我只有这种字体有问题,其他字体效果很好。
  • 我试图在顶部添加白色边框。不幸的是,这只会将损坏的文本移到底部。
  • 我无法更改区域大小。
  • 文本必须填充尽可能多的空间。
  • 我需要使用冬季书法字体
马克·谢切尔

这是一种获取所需结果的简单方法。步骤如下:

  • 首先,使用caption:获取ImageMagick来告诉您将用于填充文本框并提取该信息的点数

  • 创建一个画布,其宽度是您真正想要的画布的两倍,高度是您真正想要的画布的两倍,并在其中间绘制文本-它势必适合您!

  • 现在,修剪掉文本周围的多余背景,以便有一个绝对最小边界框来包含文本

  • 将结果调整为所需的大小。


#!/bin/bash

# Width, height and text
w=600
h=150
text="KJHGFD"

# Get pointsize ImageMagick thinks is good
pointsize=$(convert -gravity center -background black -fill white -size ${w}x${h} \
    -font "Winter Calligraphy.ttf" caption:"$text" -format "%[caption:pointsize]" info:)

echo ImageMagick likes pointsize: $pointsize

# So draw text in that size on larger canvas, trim to bounds of letters and resize to desired size
wb=$((w*2))
hb=$((h*2))
convert -gravity center -fill white -size ${wb}x${hb} xc:black \
    -font "Winter Calligraphy.ttf" -pointsize $pointsize -annotate 0 "$text" \
    -trim +repage -resize ${w}x${h}\! result.png

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章