Buscar este blog

junio 29, 2011

tomar capturas de pantalla con python - parte 2

Se anadio la captura por recuadro, esto quiere decir que se puede tomar solo un area de la pantalla sin tener que tomar la captura de toda la pantalla dando clic en la hoja que tiene la ventana.

import pygtk; pygtk.require('2.0')
import gtk
import os, datetime
import sys

version="0.2"

data = [
"16 16 3 1",
"       c None",
".      c #000000",
"X      c #FFFFFF",
"                ",
"   ......       ",
"   .XXX.X.      ",
"   .XXX.XX.     ",
"   .XXX.XXX.    ",
"   .XXX.....    ",
"   .XXXXXXX.    ",
"   .XXXXXXX.    ",
"   .XXXXXXX.    ",
"   .XXXXXXX.    ",
"   .XXXXXXX.    ",
"   .XXXXXXX.    ",
"   .XXXXXXX.    ",
"   .........    ",
"                ",
"                "
]

class icarus_pantallazo:
    def main(self):
        root = gtk.gdk.get_default_root_window();
        rootwidth, rootheight = root.get_size();
        current_dt=datetime.datetime.now()
        dia_numero= "%02d" % current_dt.day
        meses_numero="%02d" % current_dt.month
        anio=str(current_dt.year)
        hora_24="%02d" % current_dt.hour
        minuto="%02d" % current_dt.minute
        segundo="%02d" % current_dt.second
        self.fecha="_"+dia_numero+"-"+meses_numero+"-"+anio+"_"+hora_24+":"+minuto+":"+segundo
        #
        self.pix = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, 1, 8, rootwidth, rootheight);
        self.pix.get_from_drawable(root, root.get_colormap(), 0, 0, 0, 0, rootwidth, rootheight);
       
    def guardar(self,modo):
        if modo==1:
            #crear ventana para tomar el recuadro
            self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
            self.window.set_decorated(True)
            self.window.connect("delete_event", self.close_application)
            self.window.set_events(self.window.get_events() | gtk.gdk.BUTTON_PRESS_MASK)
            self.window.connect("button_press_event", self.press_aplication)
            self.window.show()
           
            pixmap, mask = gtk.gdk.pixmap_create_from_xpm_d(self.window.window, None, data)
            self.image = gtk.Image()
            self.image.set_from_pixmap(pixmap, mask)
            self.image.show()

            # To display the image, we use a fixed widget to place the image
            self.fixed = gtk.Fixed()
            self.fixed.set_size_request(50,50) #16,16
            self.fixed.put(self.image, 0, 0)
            self.window.add(self.fixed)
            self.fixed.show()
            self.window.shape_combine_mask(mask, 0, 0)
            gtk.main()
            #
        if self.pix!=None:
            home = os.environ['HOME']
            self.pix.save(home+"/pantallazo"+self.fecha+".png", "png")
            print "Tomo foto"
            return 0
        return 1
    def press_aplication(self, widget, event):
        #print event
        if event.x<=16 and event.y<=16 and event.button==1:
            dimension=self.window.get_size()
            posicion=self.window.get_position()
            pix_aux = self.pix.subpixbuf(posicion[0],posicion[1], dimension[0], dimension[1])
            self.pix=pix_aux
            self.window.hide()
            gtk.main_quit()
            #self.pix=None
        return 0
       
    def close_application(self, widget, event, data=None):
        gtk.main_quit()
        self.pix=None
        #del self.window
        return gtk.FALSE

if __name__ == '__main__':
    a=icarus_pantallazo()
    a.main()
    if sys.argv[1].lower()=="completa":
        a.guardar(0)
    elif sys.argv[1].lower()=="recuadro":
        a.guardar(1)
    else:
        print "parametro incorrecto"

$python archivo.py recuadro "toma la captura del area marcada por la ventana"



o
$python archivo.py completa "Toma la captura completa"


Descargar despues de descargar anadir la extension py

No hay comentarios:

Publicar un comentario

$ apt-get install comentarios