gpt4 book ai didi

python - PIL ImageDraw.textsize 返回不正确的高度

转载 作者:太空狗 更新时间:2023-10-29 20:30:46 25 4
gpt4 key购买 nike

我在使用 PIL 的 ImageDraw 模块时遇到问题,特别是 Draw.textsize 方法。这个方法应该接受一个字符串和一个字体,并返回字符串在以该字体呈现时将占据的宽度和高度。不过,它返回的高度似乎有一个下限:我无法说服它返回低于 43 的任何值。这是一个示例 ( link ) 来显示我正在查看的内容(根据返回的宽度和高度在文本周围绘制的边界框),这是生成它的代码:

from PIL import Image, ImageDraw, ImageFont # PIL 1.1.7; Python 2.6.6

im = Image.open(r'C:\test\blank.png').convert('RGB')
draw = ImageDraw.Draw(im)

TEXTCOLOR = (0, 0, 0)
X = 10
Y = 3

for fontsize in xrange(8, 51):
# Other fonts behave the same way
font = ImageFont.truetype('Arial.ttf', fontsize)

text = 'Hello, World! Size %d' % fontsize

width, height = draw.textsize(text, font=font)
print 'Font size %d: %d x %d' % (fontsize, width, height)

bbox = [(X, Y), (X+width, Y+height)]
draw.rectangle(bbox, outline=TEXTCOLOR)
draw.text((X, Y), text, font=font, fill=TEXTCOLOR)
Y += height + 3

im.show()

一旦字体大小达到 38 左右,边界框就会拉伸(stretch)以正确匹配它,但在此之前,它被设置为静态 43。问题是,有人知道为什么 ImageDraw 会这样吗,有人知道解决它的方法吗?我目前正在通过设置解决此问题:

width = min(width, fontsize+1)

...但这显然不是有史以来最强大的解决方案。

最佳答案

基本问题似乎是 PIL 是 super 马车,基本上不再受支持。这里提到的问题还不是最糟糕的(例如,没有人能够复制它,因为它甚至很难安装......)。

鉴于 PIL 1.1.7 中似乎猖獗的所有麻烦,最好的解决方案似乎是简单地安装 Pillow并继续前进。它不需要对已经运行 PIL 的代码进行代码更改(它是 PIL 的一个分支,因此它安装了“PIL”库),而且它似乎非常友好(并且仍然处于事件状态)。正如该问题的评论者所证实的那样,这是一个简单、无故障的安装,而且它确实按预期工作。

关于python - PIL ImageDraw.textsize 返回不正确的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16088666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com