Я пытаюсь добавить текст в Pixbuf, используя Python и Gdk 3.
Я часами искал в Интернете информацию по этой теме, и, похоже, мне нужно создать контекст cairo из файла 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 полностью прозрачен. Может ли кто-нибудь сказать мне, что я делаю неправильно или есть ли лучший способ сделать это?