@whoareyoutofuckinglecture
Python developer

Автоматически нанести текст на тысячу картинок?

Возникла у меня необходимость создать тысячу изображений с 4 блоками текста.
Картинка одна и та же, в формате сторис для Инстаграма, а вот текст разный, помещён в txt документ.

Мне нужно сделать так, чтобы текст не выходил за заданные границы, а если длина текста слишком велика для блока, то нужно выбрасывать экспшен.

Сейчас я ковыраюсь с Pillow, там есть функция multiline_text, в которую нужно отдавать отформатированный текст (с \n в местах переноса строки). Именно это мешает мне - не имеет никакого смысла вручную лопатить файл с текстами, замеряя количество символов и расставляя "\n".

Уже даже подумываю взять смартфон с запущенным на нём мобильным приложением, которое может такие блоки создавать (с заранее определёнными границами, под которые подгоняется текст), и через Appium всё это провернуть.
Но это дикий и ненадёжный костыль..

Возможно, вы знаете, как решить мой вопрос иным способом?
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
@rPman
Твоя задача на самом деле не такая уж и простая

Решение - найти любой рендерер форматированного текста (небось еще и переносы не откажешься корректные?), т.е. тебе нужен рендерер rich text, такие есть почти для всех языков, например на qt (там это будет минималистичный html браузер с поддержкой ссылок) конечно можно любой другой компонент хоть полноценный браузер, разобраться, собрать gui приложение, выводить по очереди текст и брать его экранную копию, причем можно прямо с картинкой, тут же видно будет, влезает оно по высоте или нет (тут можно кстати было бы подбирать шрифт и его размер до тех пор пока не влезет)

Лично я бы решал проблему, добавив используя встраиваемый браузер, только на питоне код заметно сложнее чем на каком-нибудь c# .net, помню писал скринер сайта с кастомным размером страницы, прекрасно работало под mono headless, это было буквально несколько строчек кода.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы