Найти в Дзене

Программирование на языке Python. Библиотека pillow. Снимок экрана с помощью ImageGrab

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Снимок экрана с помощью PIL.ImageGrab

Сегодня статья не большая, но интересная. В библиотеке pillow есть возможность сделать снимок экрана.

В основе лежит метод

ImageGrab.grab(bbox=None,
include_layered_windows=False,
all_screens=False, xdisplay=None)

  • bbox — можно указать прямоугольник экрана, который будет копироваться. По-умолчанию захватывается весь экран, в Linux снимается сразу все дисплее в одном изображении.
  • include_layered_windows=False — многослойные окна (в Windows).
  • all_screens=False — захват всех мониторов (в Windows).
  • xdisplay=None — адрес дисплея X11.

Пример 1. Захвата экранов двух дисплеев. Задержка в программе (2 с) необходима для активизации нужного окна.

#!/usr/bin/python3
from PIL import Image, ImageGrab
import time
# активизируем нужное окно
time.sleep(2)
# создание скриншота
img = ImageGrab.grab(xdisplay='')
img.save("test1.png", "png")

Захватываются экраны всех дисплеев (у меня их два). См. рисунок 1.

Рисунок 1. Захват всех (двух) экранов
Рисунок 1. Захват всех (двух) экранов

Пример 2. Выделяем только первый экран

#!/usr/bin/python3
from PIL import Image, ImageGrab
import time
# активизируем нужное окно
time.sleep(2)
# создание скриншота
img = ImageGrab.grab(xdisplay='')
# определяем размеры
d = img.width
h = img.height
img = ImageGrab.grab((0, 0, d // 2, h))
img.save("test.png", "png")

Результат выполнения программы (см. рисунок 2)

Рисунок 2. Захват первого экрана
Рисунок 2. Захват первого экрана

Ну, пока всё!

Пишите свои предложения и замечания и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

Ваша программа просто симфония...неоконченная
Ваша программа просто симфония...неоконченная