2010-07-15 3 views
1

Я хочу сохранить gtk.DrawingArea() содержимое объекта в файл jpeg с помощью PIL. Особенно хочу добавить к this script возможность сделать фото. Я нашел, как save image to jpeg. Все, что мне нужно - получить объект pixbuf из объекта gtk.DrawingArea(). Как я могу это сделать?save gtk.DrawingArea to file

ответ

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.