python gir / Gtk.Image:为什么会损坏我的图片?
我正在使用一个外部的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 个回答
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