Хотя стандартная библиотека Python не предоставляет никакого метода для захвата экрана, мы можем сделать это с помощью нескольких сторонних модулей.
Содержание
Вариант 1
Первый из них – PyAutoGUI, кроссплатформенный модуль для автоматизации задач. Мы можем захватить экран с помощью трех строк кода.
import pyautogui
# Снимок экрана.
screenshot = pyautogui.screenshot()
# Сохранение изображения.
screenshot.save("screenshot.png")
Code language: PHP (php)
PyAutoGUI внутренне использует Pillow, одну из самых популярных библиотек для работы с изображениями, поэтому screenshot является экземпляром PIL.Image.Image.
# Открыть изображение.
screenshot.show()
Code language: CSS (css)
Чтобы захватить только часть экрана, мы используем параметр region – кортеж со структурой (X, Y, Width, Height).
# Захват части экрана.
screenshot = pyautogui.screenshot(region=(50, 50, 400, 300))
Code language: PHP (php)
Самый простой способ установить модуль и все его зависимости – через pip.
pip install pyautogui
Для корректной работы PyAutoGUI в Linux необходимо также установить следующие зависимости.
pip install python3-xlib
sudo apt-get install scrot
sudo apt-get install python3-tk
sudo apt-get install python3-dev
Code language: JavaScript (javascript)
В Max OS требуется следующее:
pip install pyobjc-core pip install pyobjc
В Windows пакет не требует дополнительной установки.
Вариант 2
Еще один пакет, похожий на PyAutoGUI – AutoPy, инструментарий автоматизации платформы, написанный на C.
Его API гораздо более элегантно, проще и приятнее, чем у предыдущего модуля, но на данный момент он поддерживает только Python 2 (именно поэтому он является вариантом номер два).
Захват экрана так же прост:
import autopy
screenshot = autopy.bitmap.capture_screen()
screenshot.save("screenshot.png")
Code language: JavaScript (javascript)
Функция capture_screen может принимать заданную область экрана в виде структуры ((X, Y), (Width, Height)).
screenshot = autopy.bitmap.capture_screen(((50, 50), (400, 300)))
Установить можно также через pip.
pip install autopy
Вариант 3
pyscreenshot – это модуль, созданный специально для выполнения этой задачи, доступный для Python 2 и 3.
Его единственная зависимость – PIL/Pillow.
В Linux также требуется один из следующих пакетов: scrot, ImageMagick, PyGTK, PyQt или wxPython.
В Mac OS X для этого требуется Quartz или screencapture.
im = pyscreenshot.grab()
im.save("screenshot.png")
Code language: JavaScript (javascript)
Функция всегда возвращает экземпляр PIL.Image.Image.
Можно также захватить только часть экрана.
im = pyscreenshot.grab(bbox=(50, 50, 450, 350))
Обратите внимание, что структура bbox имеет вид (X1, Y1, X2, Y2).
Чтобы установить его, просто введите:
pip install pyscreenshot
В дистрибутивах Linux это также возможно:
easy_install pyscreenshot