Capturar imagen de la pantalla



Si bien la librería estándar de Python no provee ningún método para capturar la pantalla, podemos lograrlo con ayuda de algunos módulos de terceros.

Opción 1

El primero de ellos es PyAutoGUI, un módulo multiplataforma para automatizar tareas. Podemos capturar la pantalla con tres líneas de código.

import pyautogui
# Capturar pantalla.
screenshot = pyautogui.screenshot()
# Guardar imagen.
screenshot.save("screenshot.png")

PyAutoGUI utiliza internamente Pillow, una de las librerías de manejo de imagenes más populares del lenguaje, por lo que screenshot es una instancia de PIL.Image.Image.

# Mostrar imagen.
screenshot.show()

Para capturar únicamente una porción de la pantalla, empleamos el parámetro region, una tupla con la estructura (X, Y, Ancho, Alto).

# Capturar una porción de la pantalla.
screenshot = pyautogui.screenshot(region=(50, 50, 400, 300))

La forma más sencilla de instalar el módulo junto a todas sus dependencias es vía pip.

pip install pyautogui

Para poder ejecutar correctamente PyAutoGUI en Linux, además, deben instalarse las siguientes dependencias.

pip install python3-xlib
sudo apt-get install scrot
sudo apt-get install python3-tk
sudo apt-get install python3-dev

En Max OS se requiere lo siguiente:

pip install pyobjc-core
pip install pyobjc

En Windows el paquete no requiere ninguna instalación adicional.

Opción 2

Otro paquete similar a PyAutoGUI es AutoPy, un toolkit de automatización plataforma escrito en C. Su API es mucho más elegante, simple y agradable que la del módulo anterior, pero por el momento soporta únicamente Python 2 (razón por la cual pasa a ser la opción número dos).

Capturar la pantalla es igualmente de sencillo:

import autopy
screenshot = autopy.bitmap.capture_screen()
screenshot.save("screenshot.png")

La función capture_screen puede tomar una región determinada de la pantalla, con la estructura ((X, Y), (Ancho, Alto)).

screenshot = autopy.bitmap.capture_screen(((50, 50), (400, 300)))

Para Windows, puedes encontrar el instalador de AutoPy en este enlace.

Para el resto de los sistemas operativos, la forma recomendada de instalar AutoPy es:

easy_install autopy

También es posible instalarlo vía pip.

pip install autopy

O bien descargar el código de fuente desde este enlace y ejecutar:

python setup.py build
python setup.py install

Opción 3

pyscreenshot es un módulo creado específicamente para llevar a cabo esta tarea, disponible para Python 2 y 3.

Su única dependencia es PIL/Pillow. En Linux, además, necesita alguno de los siguientes paquetes: scrot, ImageMagick, PyGTK, PyQt o wxPython. En Mac OS X, requiere Quartz o screencapture.

im = pyscreenshot.grab()
im.save("screenshot.png")

La función siempre retorna una instancia de PIL.Image.Image.

También puede capturar únicamente una porción de la pantalla.

im = pyscreenshot.grab(bbox=(50, 50, 450, 350))

Nótese que la estructura de bbox es (X1, Y1, X2, Y2).

Para instalar, simplemente:

pip install pyscreenshot

En distribuciones de Linux, también es posible:

easy_install pyscreenshot



Deja un comentario