我想使用 PIL 将 gtk.DrawingArea() 对象内容保存到 jpeg 文件。我特别想添加到 this script制作照片的可能性。我找到了如何save image to jpeg 。我所需要的只是 - 从 gtk.DrawingArea() 对象获取 pixbuf 对象。我怎样才能做到这一点?
最佳答案
如果您不喜欢使用 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 .
关于python - 将 gtk.DrawingArea 保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3254499/