python - 将文本写入具有最大像素宽度的图像 Python PIL

标签 python image python-imaging-library word-wrap

这里有一个与我类似的问题: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/

相关文章:

python - 如何使用 os.listdir 只选择一个文件类型?

python - Mongodb,聚合,如何抑制_id,但保留里面的内容?

Python 列表和生成

c# - 错误 : "The codec cannot use the type of stream provided" while reading a . tiff 文件

python - 覆盖模型 save() 会导致 Django Admin 出错

python - 使用 PIL 将以不同像素保存的复制图像复制到原始图像

python - 在 python 中的 matplotlib 中的 logscale 上绘制问题

android - 去除android中图像的白色背景

java.awt.image.Kernel 和负值不执行任何操作

python - Tkinter Canvas 不显示图像