2011-12-10 55 views
4

我使用PIL在圖像上繪製一些文本。無法正確對齊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) 

回答

4

在計算文本的寬度,你只會得到一個近似,如果字體不考慮帳戶(特別是如果您使用可變寬度字體)。

爲了解決這個問題,計算文本寬度是這樣的:

w, h = draw.textsize(text, font) 

請注意,您可能還需要調整右距的大小來考慮新的寬度計算(五個像素是相當小)。

+0

謝謝。順便說下5個像素對我來說很好。:) – aemdy