gpt4 book ai didi

python - 使用 PIL 居中/中间对齐文本?

转载 作者:IT老高 更新时间:2023-10-28 20:31:08 25 4
gpt4 key购买 nike

在使用 PIL 时,我如何将文本居中对齐(和中间垂直对齐)?

最佳答案

Deprecation Warning: textsize is deprecated and will be removed in Pillow 10 (2023-07-01). Use textbbox or textlength instead.

使用 textbbox 而不是 textsize 的代码。

from PIL import Image, ImageDraw, ImageFont


def create_image(size, bgColor, message, font, fontColor):
W, H = size
image = Image.new('RGB', size, bgColor)
draw = ImageDraw.Draw(image)
_, _, w, h = draw.textbbox((0, 0), message, font=font)
draw.text(((W-w)/2, (H-h)/2), message, font=font, fill=fontColor)
return image
myFont = ImageFont.truetype('Roboto-Regular.ttf', 16)
myMessage = 'Hello World'
myImage = create_image((300, 200), 'yellow', myMessage, myFont, 'black')
myImage.save('hello_world.png', "PNG")

结果

Result


使用 Draw.textsize method计算文本大小并相应地重新计算位置。

这是一个例子:

from PIL import Image, ImageDraw

W, H = (300,200)
msg = "hello"

im = Image.new("RGBA",(W,H),"yellow")
draw = ImageDraw.Draw(im)
w, h = draw.textsize(msg)
draw.text(((W-w)/2,(H-h)/2), msg, fill="black")

im.save("hello.png", "PNG")

结果:

image with centered text

如果您的字体大小不同,请包含如下字体:

myFont = ImageFont.truetype("my-font.ttf", 16)
draw.textsize(msg, font=myFont)

关于python - 使用 PIL 居中/中间对齐文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1970807/

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