vips - Как создать обоснованный текст? - PullRequest
1 голос
/ 16 марта 2019

Я использую библиотеку vips для манипулирования некоторыми изображениями, в частности привязкой Lua, lua-vips, и пытаюсь создать оправданные текстовые изображения. Я полагаю, что в vips нет функции, позволяющей сделать это напрямую, поэтому мне было интересно, как придумать алгоритм для этого.

Моя первая идея состояла в том, чтобы проанализировать текст для выравнивания, используя известный алгоритм для выравнивания , но используя ширину изображения каждого отдельного слова вместо количества символов для измерения пустого пространства. Затем для каждой из строк поместите текстовые изображения каждого слова рядом друг с другом, добавив между ними необходимое пространство в виде черных пикселей.

Однако я не мог понять, как проверить высоту строки, поскольку она не обязательно равна высоте текстового изображения, поэтому я не уверен, что использую хороший подход.

1 Ответ

2 голосов
/ 16 марта 2019

git master libvips теперь поддерживает выравнивание , и эта функция должна появиться в следующих версиях libvips 8.8 (ожидается весна 2019 г.).

Используйте это так:

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

Сделать:

sample justified output

Или от Луа:

x = vips.Image.text("hello world sdkj hsdfkj herqkjh wehf", {width = 100, justify = true})
...