Julio-11-2007
Filed Under (Python) by Pedro Guridi

¿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


Comments
dusan on Julio 23rd, 2007 at 12:11 am #

un comentario: en las primeras líneas definas variables ‘ancho’ y ‘alto’, y sin embargo después usas ‘width’ y ‘height’

Pedro Guridi on Julio 23rd, 2007 at 1:14 pm #

dusan:
Gracias por el comentario, ahi lo corregí. saludos

Post a comment
Name: 
Email: 
URL: 
Comments: