【问题标题】:Cannot align text with PIL textsize correctly无法将文本与 PIL 文本大小正确对齐
【发布时间】:2011-12-10 05:36:32
【问题描述】:

我使用 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)

【问题讨论】:

    标签: python python-imaging-library


    【解决方案1】:

    在计算文本宽度时,如果不考虑字体(尤其是使用可变宽度字体),您只会得到一个近似值。

    要解决这个问题,请像这样计算文本宽度:

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

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

    【讨论】:

    • 谢谢。顺便说一句,5 像素对我来说很好。:)
    猜你喜欢
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 2017-04-01
    • 2021-03-23
    • 1970-01-01
    • 2014-10-23
    相关资源
    最近更新 更多