无法正确对齐PIL文本尺寸中的文本
我用PIL库在图片上画了一些文字。
我按照这个例子做的:用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)
1 个回答
4
在计算文本的宽度时,如果不考虑字体的因素,你得到的结果只是个大概(特别是当你使用可变宽度的字体时)。
要解决这个问题,可以这样来计算文本的宽度:
w, h = draw.textsize(text, font)
注意,你可能还需要调整右边距的大小,以适应新的宽度计算(五个像素其实挺小的)。