将gtk.DrawingArea保存为文件
我想把gtk.DrawingArea()对象里的内容保存成jpeg格式的文件,使用的是PIL库。特别是我想在这个脚本里添加一个拍照的功能。我找到了一些方法可以把图片保存为jpeg格式。我需要做的就是从gtk.DrawingArea()对象中获取一个pixbuf对象。我该怎么做呢?
1 个回答
2
如果你不一定要用gstreamer的话,可以考虑用OpenCV。这篇文章提供了一个用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
上——这样你就可以做很多有趣的事情了,比如这些。