2017-03-28 30 views
0

我正在使用PIL'ImageFont模塊來加載字體以生成文本圖像。 但是,使用ImageFont獲取字體高度時,我希望文本緊緊地綁定到邊緣,看起來它包含了字符的填充。如紅色矩形所示。 enter image description here如何使用PIL'ImageFont獲取字體像素高度?

c = 'A' 
font = ImageFont.truetype(font_path, font_size) 
width = font.getsize(c)[0] 
height = font.getsize(c)[1] 
im = Image.new("RGBA", (width, height), (0, 0, 0)) 
draw = ImageDraw.Draw(im) 
draw.text((0, 0), 'A', (255, 255, 255), font=font) 
im.show('charimg') 

如果我能得到字符的實際高度,然後我可以在底部長方形跳過邊界行,可能這個信息從字庫中得到了什麼? 謝謝。

+0

現在我寫了一個小函數來垂直掃描生成的圖像文本,以找到我使用的每種字體的填充。由於字體字符圖像僅包含正面和背面顏色,所以效果很好。 – binzhang

+0

'font.getsize(c)[1]''c'什麼是' –

+0

感謝您指出錯誤,我已經修復了代碼塊,請檢查它。 – binzhang

回答

1

具體尺寸取決於很多因素。我會告訴你如何計算不同的字體指標。

font = ImageFont.truetype('arial.ttf', font_size) 
ascent, descent = font.getmetrics() 
(width, baseline), (offset_x, offset_y) = font.font.getsize(text) 
  • 紅色區域的高度:offset_y
  • 高度,綠化面積:ascent - offset_y
  • 身高藍色區域:descent
  • 黑色矩形:font.getmask(text).getbbox()

希望它有幫助。

相關問題