Палочка - перенос текста - в зависимости от размера файла изображения

Привет, я пытаюсь написать текст поверх изображения. Но текст переполняется. Есть ли способ обернуть такой текстовый контент, чтобы вписаться в изображение?

from wand.image import Image
from wand.drawing import Drawing
from wand.color import Color

with Image(filename='/home/path/image.jpg').clone() as img:
    print('width =', img.width)
    print('height =', img.height)
    quote = input('quote:')
    with Drawing() as draw:
        draw.font = 'wandtests/assets/League_Gothic.otf'
        draw.fill_color=Color('red')
        draw.text_alignment= 'center'
        img.font_size=50
        draw.text(int(img.width/2),int(img.height/2), quote)
        print(draw.get_font_metrics(img,quote))
        draw(img)
        print('text drawn')
    img.save(filename='/home/path/image01.jpg')

входные данные:

"Success makes so many people hate you. I wish it wasn't that way. It would be wonderful to enjoy success without seeing envy in the eyes of those around you."

выходное изображение

2 ответа

Решение

Быстрое и грязное решение - разделить строку на две части:

draw.text(int(img.width/3),int(img.height/3), quote[0:len(quote)//2])
draw.text(int(2 * img.width/3),int(2 * img.height/3), quote[len(quote)//2:-1])

Разделение на 3 или более может потребоваться, если текст еще слишком длинный.

Вместо рисования текста используйте caption метод, который Image наследуется от BaseImage,

Другие вопросы по тегам