【发布时间】:2019-09-21 14:46:01
【问题描述】:
我正在创建一个在 128x48 小图像上绘制文本的小型 Python 程序。 它适用于仅达到 120 宽度的文本,但我不知道如何将较长的文本拆分为另一行。我该怎么做?
我尝试使用 textwrap3,但无法让它与 Pillow 一起使用。
该程序创建 128x48 的图像文件,带有黑色背景和黄色居中的文本,稍后应该在输出高达 480i 的设备上查看,因此只需将文本 大大 缩小以适应额外的文本宽度不会有帮助。当前使用的字体是 Arial 18。
这是用于创建图像的当前代码:
from PIL import Image, ImageDraw, ImageFont
AppName = "TextGoesHere"
Font = ImageFont.truetype('./assets/Arial.ttf', 18)
img = Image.new('RGB', (128, 48), color='black')
d = ImageDraw.Draw(img)
# Get width and height of text
w, h = d.textsize(AppName, font=Font)
# Draw text
d.text(((128-w)/2, (48-h)/2), AppName, font=Font, fill=(255, 255, 0))
img.save('icon.png')
以上代码输出图像如下:
宽度大于图像的较长文本输出如下(LongerTextGoesHere):
想要的结果应该与此类似:
【问题讨论】:
-
你的单词之间真的没有空格吗?怎么会有人知道在哪里明智地拆分它们?您是否考虑过改变字体的大小以及分布在多行上?
标签: python python-imaging-library