vips - 如何创建两端对齐的文本?

我正在使用vips库来操作一些图像,具体来说是它的Lua绑定lua-vips,我正在尝试创建两端对齐的文本图像。我想vips没有可用的功能直接实现这一点,所以我想知道如何想出一个算法。

我的第一个想法是使用已知的两端对齐算法分析要两端对齐的文本,但使用每个单词的图像宽度来测量空白空间,而不是字符数。然后,对于每一行,在它们之间添加必要的空隙黑色像素,将每个单词的文本图像放在一起。 没有想出如何检查行高,因为它不一定等于文本图像的高度,所以我不确定我是否在使用一个好的方法。

点赞
用户894763
用户894763

git master libvips 现在支持文本对齐功能,详情参见 这里,这一功能将在将于 2019 年春季发布的 libvips 8.8 中提供。

使用方法如下:

$ vips text x.png "hello world sdkj hsdfkj herqkjh wehf" --width 100 --justify

生成的效果如下图所示:

sample justified output

或者从 Lua 中使用:

x = vips.Image.text("hello world sdkj hsdfkj herqkjh wehf", {width = 100, justify = true})
2019-03-16 11:53:20