Capturas de Pantalla con Python

Índice

Introducción:

En Internet, podemos encontrar muchas librerías que son muy interesantes, librerías que nos facilitan el desarrollo y resolución de algún programa o problema.


¿Nunca a pensado en tomar capturas de pantalla, con un sencillo script de Python?

Hoy te enseñare a como a tomar capturas de pantalla con ayuda de Python y la librería MSS.

Resultado de imagen para screenshot logo



Hay muchas librerías que nos pueden ayudar a cumplir este objetivo, pero llevo un tiempo usando MSS y me e encariñado un poco. Para descargar la librería MSS debes entrar en el siguiente enlace: Descargar MSS.


Una vez descargado MSS, podemos comenzar a escribir codigo.

Mi primer Screenshot con Python.

Comencemos por el principio, tomemos nuestra primera captura de pantalla, con MSS hacer esto es muy fácil, ¿Un ejemplo?, aquí lo tienes:


 
from mss import mss

with mss() as screen:
    screen.shot()



Muy bien, analicemos cuidadosamente este código. Lo primero que hago es importa a MSS, luego usamos la sentencia with, screen sera nuestro objeto al cual usaremos para llamar a shot() el cual hace la captura de pantalla, así de fácil tomamos nuestra primera captura de pantalla, si vas a la carpeta actual del script, podrás ver un archivo png.


A continuación, te muestro mi screenshot:





Ese seria mi resultado, muy fácil y sencillo,¿Ya lo intentaste?.


SI se dan cuenta, el nombre del screenshot es "monitor-1", esto es por defecto, si tomáramos otra captura de pantalla el archivo seria sustituido y tendríamos la captura tomada recientemente, esto en ocasiones es un problema, ¿como lo solucionamos? a continuación te muestro como:

 
from mss import mss

with mss() as screen:
    screen.shot(output="screen.png")



Como pueden observar el código no cambio mucho, lo que hago es pasarle un argumento a shot, le pasamos el argumento "output" al cual le diremos que nombre queremos que lleve nuestra captura de pantalla, y no se nos puede olvidar asignar el formato de imagen, el cual puede ser png o jpg, todo depende de ti.


Si ya asignaste el argumento output al método shot, ya puedes probar el código, y ver el resultado, mi resultado es el siguiente:







Ahora hagamos algo un poco más interesante. Todas la capturas de pantalla son fullscreen, pero esto lo podemos cambiar, podemos tomar solo una parte de nuestro monitor, a continuación te muestro como.



import mss
import mss.tools

with mss.mss() as sct:
    monitor = {'top': 190, 'left': 160, 'width': 200, 'height': 140}
    output = 'sct-{top}x{left}_{width}x{height}.png'.format(**monitor)

    sct_img = sct.grab(monitor)

    mss.tools.to_png(sct_img.rgb, sct_img.size, output)
    print(output)



Analicemos el código: Lo primero que hacemos es importar la librería mss y mss.tools, luego hacemos uso de la sentencia with. Declaramos una variable con el identificador "monitor" la cual almacenara un diccionario con cuatro elementos los cuales le dirá a MSS cual sera la parte del monitor que queremos capturar. Declaramos una variable con el identificador "output" el sera el nombre de el screenshot. Luego capturamos los datos con grab. Y por ultimo guardamos en el archivo de imagen. Mi resultado seria el siguiente:




Bueno, ahora es tu turno de experimentar y lograr grandes cosas, te invito a que compartas tu experiencia dejando un buen comentario. Mi nombre es Luis y fue un placer compartir mis conocimientos con todos ustedes :D.

  1. Antonio Jesús dice:

    Cordial saludo Luis Salcedo; muchas gracias por todo lo que has compartido; es bien interesante.
    Un saludo desde Medellín, Colombia.

  2. Luis Salcedo dice:

    Saludos desde Venezuela 😀

  3. Roberto dice:

    Este comentario ha sido eliminado por el autor.

  4. Roberto dice:

    Buenas Don Luis.
    Quisiera saber si usted tendrá ejemplos de como imprimir en Python y Jasper, para una aplicación de escritorio, ya que al parecer la gente el tema de impresión no lo publica. O bien otro tipo de reporteador, pero donde se diseñe el reporte, no como reportlab o pandas.

    Gracias

    Roberto
    Costa Rica.

  5. Roberto dice:

    Buenas noches Don Luis.
    Realicé el ejemplo de los calendarios, pero al ejecutar el proceso para el html, me da el siguiente error.

    Traceback (most recent call last):
    File "CALENDARIO1", line 34, in
    html.write(calendario_2012)
    TypeError: write() argument must be str, not HTMLCalendar

    Este es mi código.
    import calendar
    #Instancia de HTMLCalendar
    cl = calendar.HTMLCalendar()
    #Definimos el año del calendario
    calendario_2012 = calendar.HTMLCalendar(2012)

    #Creamos un archivo con formato html en donde estará el contenido HTML
    with open("./calendario_2012.html") as html:
    html.write(calendario_2012)
    html.close()

    Gracias.
    Roberto
    Costa Rica.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey