Написание текста с возвратом каретки к изображению в Python с использованием PIL - PullRequest
1 голос
/ 14 апреля 2009

У меня есть скрипт на python, который записывает текст в изображения с помощью PIL. Все это работает нормально, за исключением случаев, когда я сталкиваюсь со строками с возвратом каретки в них. Мне нужно сохранить возврат каретки в тексте. Вместо того, чтобы писать возврат каретки к изображению, я получаю маленький символ коробки, где должен быть возврат. Вот код, который пишет текст:

<code>
 draw = ImageDraw.Draw(blankTemplate)
 draw.text((35 + attSpacing, 570),str(attText),fill=0,font=attFont)
</code>

attText - это переменная, с которой у меня проблемы. Я преобразую его в строку перед тем, как написать, потому что в некоторых случаях это число.

Спасибо за помощь.

Ответы [ 2 ]

7 голосов
/ 14 апреля 2009

Давайте подумаем немного. Что означает «возврат»? Это означает пройти налево на некоторое расстояние, а затем на некоторое расстояние и возобновить отображение символов.

Вы должны сделать что-то вроде следующего.

y, x = 35, 570
for line in attText.splitlines():
    draw.text( (x,y), line, ... )
    y = y + attSpacing
0 голосов
/ 16 июня 2016

Вы можете попробовать следующий код, который отлично подходит для моих нужд:

# Place Text on background
    lineCnt = 0
    for line in str(attText):
        draw = ImageDraw.Draw(blankTemplate)
        draw.text((35 + attSpacing,570 + 80 * lineCnt), line, font=attFont)
        lineCnt = lineCnt +1

Выражение «y + 80 * lineCnt» перемещает текст вниз на y в зависимости от номера строки. (коэффициент «80» для смены должен быть адаптирован в соответствии со шрифтом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...