python GTK3 图片来自 PIL jpg 格式



我正在尝试从缓冲区(从 Oracle 数据库中获取为 blob(作为 Gtk.Image(( 打开图像 (jpg( 并将其添加到 Gtk 窗口中,但我收到错误"预期的 Gtk.Widget,但得到了 PIL。JpegImagePlugin.JpegImageFile"。我可以使用show((显示图像,我可以从光盘上的路径窗口中添加jpeg文件,然后显示窗口,但是当我尝试从缓冲区添加jpg时,出现错误。这是我制作的:

my_source=Here_I_get_BLOB_img_from_database()
newimage=Gtk.Image()
newimage=my_source.read()
image=io.BytesIO(newimage)
dt=Image.open(image)
newwindow = Gtk.Window(modal=True)

在这一点上,实际上我在缓冲区中有jpg,我可以做:

dt.show() # to display the image in system imageviewer

或者将dt保存为jpg,或者将image.set_from_file("带有jpg扩展名的路径"(的结果添加到newwindow,但不知道如何做到这一点:

newwindow.add(dt) 

或任何具有类似效果的东西。如何以最简单的方式做到这一点?

对我有用的是——

从缓冲区加载img的Gtk.Image具有Pixbuf对象,例如可以从流加载。所以:

from gi.repository import (...) GdkPixbuf, GLib, Gio
(...)
my_source=Here_I_get_BLOB_img_from_database()
newimage=my_source.read()
glib=GLib.Bytes.new(newimage)
stream = Gio.MemoryInputStream.new_from_bytes(glib)
pixbuf = GdkPixbuf.Pixbuf.new_from_stream(stream, None)
image=Gtk.Image().new_from_pixbuf(pixbuf)
my_window = Gtk.Window(modal=True, title="Image")
my_window.add(image)
image.show()
my_window.show()

最新更新