python gir / Gtk.Image:为什么它会破坏我的形象?

时间:2012-02-05 16:42:28

标签: python gtk pygtk pygobject

我正在使用外部api,它返回一个Gtk.Image对象。 我正在尝试将Gtk.Image写入文件。 为了说明这个问题,我创建了以下代码:

from gi.repository import Gtk
import cStringIO

i = Gtk.Image()
i.set_from_file('/home/leon/Pictures/msn/ikea.jpg')

p = i.get_pixbuf()

f = open('/tmp/test.png', 'wb+')

def write(*args, **kwargs):
    f.write(args[0])
    return True

# ubuntu 11.10 doesn't have pixbuf.save_to_callback so instead use save_to_callbackv
p.save_to_callbackv(write, None, "png", [], [])

f.close()

文件被写入磁盘但已损坏。它为什么会被破坏?

1 个答案:

答案 0 :(得分:1)

这是一个更短(和工作)的版本:

from gi.repository import Gtk

i = Gtk.Image()
i.set_from_file('/home/leon/Pictures/msn/ikea.jpg')

p = i.get_pixbuf()
p.savev('/tmp/xxx.png', 'png', [], [])

虽然,我不确定你的版本出了什么问题:S