¿Como tomar un screenshot de toda la pantalla?
Usando la API GDK Pixbuf. La salida puede ser en PNG o JPEG, en el caso del ultimo es posible elegir la calidad pasando como parámetro al metodo gdk.Pixbub save() un valor entre 0 y 100.
# Entre "png" o "jpeg"
formato = "jpeg"
ancho = gtk.gdk.screen_width()
alto = gtk.gdk.screen_height()
screenshot = gtk.gdk.Pixbuf.get_from_drawable(
gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True, 8, ancho, alto),
gtk.gdk.get_default_root_window(),
gtk.gdk.colormap_get_system(),
0, 0, 0, 0, ancho, alto)
# Pixbuf tiene un método save
# Nota: el formato png no soporta el argumento "quality"
screenshot.save("screenshot." + formato, formato, {"quality": "20"})
Advertencia: Si planea utilizar este codigo en un bucle, o muchas veces dentro del programa, serÃa mejor agregar el siguiente código para evitar un desborde de memoria (considerando el tamaño del bitmap de esas proporciones), según un bug detallado aquÃ: [www.async.com.br].
del screenshot
gc.collect()
Traducción al español de: faq.pygtk.org
Share This