2017-03-28 1 views
0

PIL 'ImageFontモジュールを使用して、フォントを読み込んでテキストイメージを生成しています。 私はテキストをしっかり縁に縛ってもらいたいのですが、ImageFontを使ってフォントの高さを取得すると、文字のパディングが含まれているようです。赤い矩形が示すように。 enter image description herePIL '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()

希望します。

関連する問題