这里有一个与我类似的问题:python PIL draw multiline text on image
但是,该解决方案使用:
textwrap.wrap(..., width=40)
这是字符的宽度。我正在尝试做一些宽度应该以像素为单位的事情,而所有文档似乎只有字符宽度。 (我将使用不同大小的文本,以便对于特定宽度的图像,字符宽度不会保持不变)
最佳答案
我的简单解决方案:
def wrap_text(text, width, font):
text_lines = []
text_line = []
text = text.replace('\n', ' [br] ')
words = text.split()
font_size = font.getsize(text)
for word in words:
if word == '[br]':
text_lines.append(' '.join(text_line))
text_line = []
continue
text_line.append(word)
w, h = font.getsize(' '.join(text_line))
if w > width:
text_line.pop()
text_lines.append(' '.join(text_line))
text_line = [word]
if len(text_line) > 0:
text_lines.append(' '.join(text_line))
return text_lines
关于python - 将文本写入具有最大像素宽度的图像 Python PIL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11159990/