Google+ Seguidores

jueves, 2 de noviembre de 2017

Capturas de Pantalla con Python

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.

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

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. 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.

    ResponderEliminar
  4. 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.

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

Powered by Blogger .