Доброго времени суток, читатели, зрители моего канала 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.
Пример 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)
Ну, пока всё!
Пишите свои предложения и замечания и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.