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