我使用 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)
最佳答案
在计算文本宽度时,如果不考虑字体,您只会得到一个近似值(尤其是在使用可变宽度字体时)。
要解决此问题,请像这样计算文本宽度:
w, h = draw.textsize(text, font)
请注意,您可能还需要调整右边距的大小以考虑新的宽度计算(五个像素非常小)。
关于python - 无法将文本与 PIL 文本大小正确对齐,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8454679/