Работаю над забавной задачей: 1. Разместить текст на изображении. 2. Размер шрифта надо подобрать так, чтоб текст поместился и не был дико мелким. 3. Текст может быть с переносами строк и без. Надо разбить на строки такого размера, чтоб влезло. 4. На каком-то этапе надо выполнять масштабирование полотна картинки. 5. Полотно картинки можно масштабировать подгоняя под текст в разумных пределах. По ширине не выходя за 1000 пикселей.
Дикое количество переменных и вариантов... 😌 Обожаю такие задачки
а начиналось просто как бот для того чтоб трясти текстом...
Всё осложняется тем, что за сборку картинки отвечает Pillow, а он не асинхронный, следовательно вынесен в отдельный модуль с шебангом. И вот только он умеет масштабировать текст и получать размер текста. Но грузить его ещё и разбивкой текста на слова как-то не хочется... но видимо без этого никуда
run_in_executor и в экзекуторе - ProcessPoolExecutor
т.е. считаешь общую длину, проверяешь не выходит ли оно за допустимые размеры (ты же знаешь минимальные размеры символов и максимальное разрешение пикчи)
если ок то считаешь длину стороны - берёшь корень (просто в квадрате удобно размещать), располагаешь по словам, без переносов внутри слова (тут точно будет пересчёт размеров)
если ок то считаешь длину стороны - берёшь корень (просто в квадрате удобно размещать), располагаешь по словам, без переносов внутри слова (тут точно будет пересчёт размеров)
Если будет очень длинное слово, абракадабра какая-нибудь, то оно может выйти за пределы размеров, это тоже надо учитывать