Разбейте длинный нарисованный текст на несколько строк с помощью Подушки - PullRequest
1 голос
/ 21 сентября 2019

Я создаю небольшую программу на Python, которая рисует текст на маленьком изображении размером 128x48.Он отлично работает для текста, ширина которого достигает 120, но я не могу понять, как разделить более длинный текст на дополнительную строку.Как мне это сделать?

Я пытался использовать textwrap3, но не смог заставить его работать с подушкой.

Программа создает файлы изображений 128x48 с черным фоном итекст по центру желтого цвета, который впоследствии предполагается просматривать на устройстве, которое выводит до 480i, поэтому простое уменьшение размера текста на много не поможет.В настоящее время используется шрифт Arial 18.

Вот текущий код, использованный для создания изображения:

from PIL import Image, ImageDraw, ImageFont

AppName = "TextGoesHere"
Font = ImageFont.truetype('./assets/Arial.ttf', 18)
img = Image.new('RGB', (128, 48), color='black')
d = ImageDraw.Draw(img)

# Get width and height of text
w, h = d.textsize(AppName, font=Font)

# Draw text
d.text(((128-w)/2, (48-h)/2), AppName, font=Font, fill=(255, 255, 0))

img.save('icon.png')

Приведенный выше код выводит изображение следующим образом:

a busy cat

Более длинный текст с шириной, превышающей размер изображения, выводимого следующим образом (LongerTextGoesHere):

a busy cat

Требуемый результат должен быть схожим с этим:

a busy cat

1 Ответ

2 голосов
/ 21 сентября 2019

Вы можете сделать это довольно просто, без необходимости кодировать любой Python, если вы используете ImageMagick , который установлен в большинстве дистрибутивов Linux и доступен для macOS и Windows.Итак, просто в Терминале:

convert -size 128x48 -background black -font Arial -fill yellow -gravity center caption:"Some Text" result.png

enter image description here

Или с более длинной текстовой строкой:

convert -size 128x48 -background black -font Arial -fill yellow -gravity center caption:"Some Really Really Long Text" result.png

enter image description here

Если вы действительно, действительно хотите написать Python, Wand - это привязка Python для ImageMagick , а имена функций будут соответствовать использованным выше.

...