Задать вопрос
@whoareyoutofuckinglecture
Python developer

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

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

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

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

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

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

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

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

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

Похожие вопросы
от 60 000 до 120 000 ₽
Wanted. Москва
от 60 000 до 120 000 ₽
Wanted. Санкт-Петербург
от 80 000 до 150 000 ₽