сохранить gtk.DrawingArea в файл

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


person Mykola Kharechko    schedule 15.07.2010    source источник


Ответы (1)


Если вы не согласны с идеей использования 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 — это позволило бы вам делать все виды забавные вещи.

person Wayne Werner    schedule 15.07.2010
comment
Мне жаль. Сейчас 2020 год, а я все еще настаиваю на этом. Но если я могу спросить, где pixbuf.save() (pixbuf.savev()) сохраняет изображение по умолчанию? - person fsevenm; 08.07.2020
comment
@fsevenm Я не уверен - я бы проверил документы gtk/gdk pixbuf - person Wayne Werner; 16.07.2020