kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Как определить сколько символом произвольного размера поместится в изображении?

Поверх изображения пишу текст с использованием wrap()
text = textwrap.wrap(text_bot, 20)
font = ImageFont.truetype(fonts, int(width/20))
image.paste(source)
draw = ImageDraw.Draw(image)
current_height, padding = (height / 1.2), 10
for line in text:
    w, h = draw.textsize(line, font=font)
    print(text)
    print(w)
    print(h)
    draw.text(((width - w) / 2, current_height), line, font=font, fill=(0, 0, 0, 1))
    current_height += h + padding

Изображения разных размеров, шрифт зависит от размера изображения, из-за этого "на глаз" подобрать на какое кол-во слов wrap() должен разбивать строки невозможно. Как можно просчитать, сколько может влезть символом определенного размера по ширине изображения, или может есть функция аналогична wrap(), которая больше подойдет?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
kshnkvn
@kshnkvn Автор вопроса
yay ✌️ t.me/kshnkvn
Придумал. Хоть и очень приблизительно, но по крайней мере не вылазит за пределы и выглядит более менее:
string_size, letter_size = 0, 0
for line in text:
    string_size, letter_size = draw.textsize(line, font=font)
string_size = int(width/letter_size)
text = textwrap.wrap(text_bot, string_size)
print(string_size)

Зная высоту шрифта символа, т.к. символы по высоте и ширине примерно равны, то просто делю ширину всего изображения на высоту символа и получаю примерное кол-во символов, которые могут вместится в строку.
Если кто знает более "правильный" вариант - буду рад.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы