我使用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)
答案 0 :(得分:4)
计算文本宽度时,如果不考虑字体,则只能得到近似值(特别是如果使用可变宽度字体)。
要解决此问题,请计算文字宽度,如下所示:
w, h = draw.textsize(text, font)
请注意,您可能还需要调整右边距的大小以考虑新的宽度计算(五个像素非常小)。