Я хочу сохранить содержимое объекта gtk.DrawingArea() в файл jpeg, используя PIL. В частности, я хочу добавить в этот скрипт возможность делать фото. Я нашел, как сохранить изображение в формате jpeg. Все, что мне нужно - получить объект pixbuf из объекта gtk.DrawingArea(). Как я могу это сделать?
сохранить gtk.DrawingArea в файл
Ответы (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
Мне жаль. Сейчас 2020 год, а я все еще настаиваю на этом. Но если я могу спросить, где pixbuf.save() (pixbuf.savev()) сохраняет изображение по умолчанию?
- person fsevenm; 08.07.2020
@fsevenm Я не уверен - я бы проверил документы gtk/gdk pixbuf
- person Wayne Werner; 16.07.2020