2019年3月20日水曜日

pycairo で テキスト画像作成

CairoというライブラリのPython バインドでテキストの画像を作る。 サンプルが少なくてわかりにくかった。。 テキストの描画時のサイズをScaledFontを用いてextentsとしてうけとり、 それを使って位置決めしている。
> python test.py TEXT FONTSIZE
のように使う。
import cairo
import sys

WIDTH, HEIGHT = 256, 64
text = sys.argv[1]
fontsize = int(sys.argv[2])

surface = cairo.ImageSurface(cairo.FORMAT_RGB24, WIDTH, HEIGHT)
ctx = cairo.Context(surface)

ctx.set_source_rgb(1, 1, 1)  # White
ctx.rectangle(0, 0, WIDTH, HEIGHT) # clear background
ctx.fill()

ctx.set_source_rgb(0,0,0) # Black 
ctx.set_font_size(fontsize)

sf = ctx.get_scaled_font()
extents = sf.text_extents(text)
ctx.move_to(WIDTH / 2 - extents.width /2, HEIGHT /2 + extents.height / 2)
ctx.show_text(text)

surface.write_to_png("example.png")

0 件のコメント: