2

Python と Gdk 3 を使用して、Pixbuf にテキストを追加しようとしています。

このトピックに関する情報を何時間も Web で検索してきましたが、pixbuf から cairo コンテキストを作成する必要があるようです。残念ながら、カイロの経験はありませんが、次のコードをまとめることができました。

from gi.repository import Gdk

def put_text(pixbuf, text, x, y):
    #create a Gdk.Window
    window_attr= Gdk.WindowAttr()
    window_attr.width= pixbuf.get_width()
    window_attr.height= pixbuf.get_height()
    window_attr.window_type= Gdk.WindowType.OFFSCREEN
    #~ window_attr.window_type= Gdk.WindowType.TEMP
    window_attr.redirect= True
    #~ window_attr.redirect= False
    window= Gdk.Window(None, window_attr, Gdk.WindowAttributesType(0))

    #make a cairo context from the window
    context= Gdk.cairo_create(window)
    Gdk.cairo_set_source_pixbuf(context, pixbuf, 0, 0)

    #render text
    context.move_to(x, y)
    context.set_font_size(15)
    context.show_text(text)

    #get the resulting pixbuf
    surface= context.get_target()
    result= Gdk.pixbuf_get_from_surface(surface, 0, 0, surface.get_width(), surface.get_height())

    #~ window.destroy()
    return result

少なくとも私のプログラムがクラッシュすることはありません。ただし、それが生成する pixbuf は完全に透過的です。私が間違っていること、またはこれを行うためのより良い方法があるかどうかを誰かに教えてもらえますか?

4

1 に答える 1