首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python3中Pickle GdkPixbuf.Pixbuf对象

在Python3中Pickle GdkPixbuf.Pixbuf对象
EN

Stack Overflow用户
提问于 2019-05-19 19:54:33
回答 1查看 93关注 0票数 1

我想在Python3中对一个GdkPixbuf.Pixbuf进行酸洗和解酸。更具体地说,Python3的multiprocessing包需要这样做,因为我通过Queue在进程之间共享这些对象。

问题是对象从

代码语言:javascript
复制
<GdkPixbuf.Pixbuf object at 0x7f8b9e9cfb88 (GdkPixbuf at 0x563b61725c60)>

代码语言:javascript
复制
<GdkPixbuf.Pixbuf object at 0x7f8b9e9eaea0 (uninitialized at 0x(nil))>

这是最小的工作示例。

代码语言:javascript
复制
>>> import gi
>>> from gi.repository import GdkPixbuf
__main__:1: PyGIWarning: GdkPixbuf was imported without specifying a version first. Use gi.require_version('GdkPixbuf', '2.0') before import to ensure that the right version gets loaded.

>>> pf = GdkPixbuf.Pixbuf.new_from_file('_icon.png')
>>> pf
<GdkPixbuf.Pixbuf object at 0x7f8b9e9cfb88 (GdkPixbuf at 0x563b61725c60)>

>>> import pickle
>>> pickle.dump(pf, open('p', 'wb'))

>>> pb2 = pickle.load(open('p', 'rb'))
>>> pb2
<GdkPixbuf.Pixbuf object at 0x7f8b9e9eaea0 (uninitialized at 0x(nil))>

我找不到其他的泡菜方法。需要将图标加载到单独的进程中(在不同的CPU核心上,而不是应用程序的主/第一进程),然后应将其传输到主进程。这是通过一个Queue来完成的,它会对所有数据进行筛选。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-22 05:15:45

我的解决方案是将“图标”不作为Pixbuf对象保存在内存中,而是作为我从文件中读取的原始字节。

在解开这些字节之后,我将它们转换成一个Pixbuf

代码语言:javascript
复制
>>> import gi
>>> from gi.repository import GdkPixbuf, Gio, GLib
__main__:1: PyGIWarning: GdkPixbuf was imported without specifying a version first. Use gi.require_version('GdkPixbuf', '2.0') before import to ensure that the right version gets loaded.
>>> with open('_icon.png', 'rb') as f:
...     icon_bytes = f.read()
... 
>>> 
>>> import pickle
>>> pickle.dump(icon_bytes, open('p', 'wb'))
>>> 
>>> pb = pickle.load(open('p', 'rb'))
>>> pb = GLib.Bytes(pb)
>>> pb = GdkPixbuf.Pixbuf.new_from_stream(Gio.MemoryInputStream.new_from_bytes(pb))
>>> pb
<GdkPixbuf.Pixbuf object at 0x7fc0858ac5e8 (GdkPixbuf at 0x55e0d8d08b60)>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56207530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档