无法正确地将文本与PIL文本化对齐

时间:2011-12-10 05:36:32

标签: python python-imaging-library

我使用PIL在图像上绘制一些文字。

我在这个示例Center-/middle-align text with PIL?中做了,但是,当文本短语发生更改时,这些行未对齐。

字体是Verdana。哪个可能是问题?

从右侧正确显示5个像素。

    colour = 'white'
    text = 'Attack Speed 3.7'
    font = ImageFont.truetype("static/fonts/verdana.ttf", 10)
    draw = ImageDraw.Draw(base)
    w, h = draw.textsize(text)
    draw.text((width - 5 - w, 110), text, colour,font=font)

这不,大约一半的单词在图像区域之外:

    colour = 'white'
    text = 'One-hand hammer'
    font = ImageFont.truetype("static/fonts/verdana.ttf", 10)
    draw = ImageDraw.Draw(base)
    w, h = draw.textsize(text)
    draw.text((width - 5 - w, 95), text, colour,font=font)

1 个答案:

答案 0 :(得分:4)

计算文本宽度时,如果不考虑字体,则只能得到近似值(特别是如果使用可变宽度字体)。

要解决此问题,请计算文字宽度,如下所示:

w, h = draw.textsize(text, font)

请注意,您可能还需要调整右边距的大小以考虑新的宽度计算(五个像素非常小)。

相关问题