使用PIL在Python中将文本和换行写入图像

1 投票
2 回答
3121 浏览
提问于 2025-04-15 11:07

我有一个用Python写的脚本,它使用PIL库在图片上写文字。除了遇到带有换行符的字符串时,其他一切都运行得很好。我需要在文本中保留换行符,但在图片上写的时候,换行符变成了一个小方框,而不是换行。下面是写文字的代码:

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

attText是我遇到问题的变量。在写入之前,我把它转换成字符串,因为有时候它是一个数字。

谢谢你的帮助。

2 个回答

0

你可以试试下面这段代码,它对我来说效果很好:

# 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”这个表达式是用来根据行号来调整文本的垂直位置的。也就是说,文本会向下移动,移动的距离是根据行号来计算的,其中“80”这个数字是根据字体大小来调整的。

7

让我们想一想。“返回”这个词是什么意思呢?它的意思是向左移动一段距离,然后向下移动一段距离,接着继续显示字符。

你需要做一些类似下面的事情。

y, x = 35, 570
for line in attText.splitlines():
    draw.text( (x,y), line, ... )
    y = y + attSpacing

撰写回答