如何使用PIL居中文本?

时间:2013-10-04 21:43:50

标签: python windows python-imaging-library centering

当我尝试:

import Image
import ImageDraw
import ImageFont

def draw_text_center(im, draw, text, font, **kwargs):
    text_size = draw.textsize(text, font)
    return draw.text(
        ((im.size[0] - text_size[0]) / 2, (im.size[1] - text_size[1]) / 2),
        text, font=font, **kwargs)

im = Image.new('L', (64, 64), 0xFF)
draw = ImageDraw.Draw(im)
draw_text_center(
    im, draw, "Hello",
    ImageFont.truetype(os.path.expandvars("%SystemRoot%/Fonts/segoeui.ttf"), 16))
del draw
im.show()

我沮丧地回到非垂直居中的文字:

enter image description here

我做错了什么?如何正确居中文本?

1 个答案:

答案 0 :(得分:0)

这只是一个猜测,因为我无法在Mac OS上重现此问题,但它看起来就像您的系统通过 lower 左角锚定文本一样而不是左角,因为它应该根据文档。

这可能是巧合,但看看这是否一致:

return draw.text(
    ((im.size[0] - text_size[0]) / 2, (im.size[1] + text_size[1]) / 2),
    text, font=font, **kwargs)
#                                                ^^^