将gtk.DrawingArea保存到文件中

时间:2010-07-15 10:05:05

标签: python gtk pygtk

我想使用PIL将gtk.DrawingArea()对象内容保存到jpeg文件。特别是我希望增加this script拍摄照片的可能性。我找到了save image to jpeg的方法。我只需要 - 从gtk.DrawingArea()对象获取pixbuf对象。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

如果你没有使用gstreamer的想法,你可以使用OpenCV。 This post使用pygame给出了一个很好的例子。

但是,你可以用这种方式获得pixbuf(你甚至不需要PIL):

def get_picture(self, event, data):
    drawable = self.movie_window.window
    colormap = drawable.get_colormap()
    pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, 0, 8, *drawable.get_size())
    pixbuf = pixbuf.get_from_drawable(drawable, colormap, 0,0,0,0, *drawable.get_size())
    pixbuf.save(r'somefile.png', 'png')
    pixbuf.save(r'somefile.jpeg', 'jpeg')

然后只需创建一个按钮并将命令绑​​定到get_picture

当然,如果我正在编写这个程序,我实际上会首先将图像抓取到Image,然后在gtk.DrawingArea上绘制 - 这将允许你做各种各样的fun things