Python pillow динамический размер изображения
Имеется изображение, в которое должен помещаться текст. Длина текста заранее неизвестна. На данный момент длинный текст выходит за рамки окна, а нужно чтобы окно увеличивалось в соответствии с длиной текста. Как это можно реализовать? Ниже приведен код и скрин.
from PIL import Image, ImageDraw, ImageFont
img = Image.new('RGBA', (500, 500), 'black')
draw = ImageDraw.Draw(img)
headline = ImageFont.truetype('arial.ttf', 40)
draw.text((40,40), 'Надел мужик шляпу, а та ему как раз', font=headline)
img.show()
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
Можно сделать так:
from PIL import Image, ImageDraw, ImageFont
offset = (40, 40) # отступ текста от верхнего левого края
margins = (10, 10) # поля вокруг текста
mytext = 'Надел мужик шляпу, а та ему как раз'
headline = ImageFont.truetype('arial.ttf', 40)
def draw_text(text, font):
width = font.getmask(text).getbbox()[2]
height = font.getmask(text).getbbox()[3]
img = Image.new('RGBA', (width+offset[0]+margins[0]*2, height+offset[1]+margins[1]*2), 'black')
draw = ImageDraw.Draw(img)
draw.text(offset, text, font=font)
img.show()
проверяем:
draw_text(mytext, headline)
Меняем параметры:
offset=(10, 10)
draw_text("Stackoverflow", ImageFont.truetype('times.ttf', 60))


