Скриншот экрана python linux

Захват изображения экрана с помощью Python с примерами

Хотя стандартная библиотека Python не предоставляет никакого метода для захвата экрана, мы можем сделать это с помощью нескольких сторонних модулей.

Вариант 1

Первый из них – PyAutoGUI, кроссплатформенный модуль для автоматизации задач. Мы можем захватить экран с помощью трех строк кода.

PyAutoGUI внутренне использует Pillow, одну из самых популярных библиотек для работы с изображениями, поэтому screenshot является экземпляром PIL.Image.Image.

Чтобы захватить только часть экрана, мы используем параметр region – кортеж со структурой (X, Y, Width, Height).

Самый простой способ установить модуль и все его зависимости – через pip.

Для корректной работы PyAutoGUI в Linux необходимо также установить следующие зависимости.

В Max OS требуется следующее:

В Windows пакет не требует дополнительной установки.

Вариант 2

Еще один пакет, похожий на PyAutoGUI – AutoPy, инструментарий автоматизации платформы, написанный на C.

Его API гораздо более элегантно, проще и приятнее, чем у предыдущего модуля, но на данный момент он поддерживает только Python 2 (именно поэтому он является вариантом номер два).

Захват экрана так же прост:

Функция capture_screen может принимать заданную область экрана в виде структуры ((X, Y), (Width, Height)).

Установить можно также через pip.

Вариант 3

pyscreenshot – это модуль, созданный специально для выполнения этой задачи, доступный для Python 2 и 3.

Его единственная зависимость – PIL/Pillow.

В Linux также требуется один из следующих пакетов: scrot, ImageMagick, PyGTK, PyQt или wxPython.

В Mac OS X для этого требуется Quartz или screencapture.

Функция всегда возвращает экземпляр PIL.Image.Image.

Можно также захватить только часть экрана.

Обратите внимание, что структура bbox имеет вид (X1, Y1, X2, Y2).

Источник

Как сделать скриншот с помощью скрипта Python в Linux

Я хочу сделать снимок экрана с помощью скрипта python и сохранить его. Меня интересует только решение для Linux, и я должен поддерживать любую среду на основе любой системы.

Ответ 1

Это работает без использования scrot или ImageMagick.

print «Размер окнаs %d на %d» % sz

print «Скриншот был сохранен как screenshot.png.»

print «Не удалось получить скриншот.»

Ответ 2

Все варианты , сгруппированные в одном классе . Вывод изображения через библиотеку PIL.

Created by Alex Snet on 2011-10-10.

Copyright (c) 2011 CodeTeam. All rights reserved.

from PyQt4.QtGui import QPixmap, QApplication

from PyQt4.Qt import QBuffer, QIODevice

wx.App() # Need to create an App instance before doing anything

Читайте также:  Удалил сетевой адаптер как восстановить windows

bmp = wx.EmptyBitmap(size[0], size[1])

mem.Blit(0, 0, size[0], size[1], screen, 0, 0)

del mem # Release bitmap

myWxImage = wx.ImageFromBitmap( myBitmap )

PilImage = Image.new( ‘RGB’, (myWxImage.GetWidth(), myWxImage.GetHeight()) )

if __name__ == ‘__main__’:

Ответ 3

Для полноты: библиотека Xlib , однако при захвате всего экрана она несколько медленная:

from Xlib import display, X

import Image #PIL

raw = root.get_image(0, 0, W,H, X.ZPixmap, 0xffffffff)

image = Image.fromstring(«RGB», (W, H), raw.data, «raw», «BGRX»)

Можно попробовать добавить некоторые типы в файлы-узкие места в PyXlib, а затем скомпилировать их с помощью Cython. Это может немного увеличить скорость.

Можно написать ядро функции на C, а затем использовать ее в python из ctypes, вот что можно сделать вместе:

//Compile hint: gcc -shared -O3 -lX11 -fPIC -Wl,-soname,prtscn -o prtscn.so prtscn.c

void getScreen(const int, const int, const int, const int, unsigned char *);

void getScreen(const int xx,const int yy,const int W, const int H, /*out*/ unsigned char * data) <

Display *display = XOpenDisplay(NULL);

Window root = DefaultRootWindow(display);

XImage *image = XGetImage(display,root, xx,yy, W,H, AllPlanes, ZPixmap);

unsigned long red_mask = image->red_mask;

unsigned long green_mask = image->green_mask;

unsigned long blue_mask = image->blue_mask;

unsigned long pixel = XGetPixel(image,x,y);

unsigned char blue = (pixel & blue_mask);

unsigned char green = (pixel & green_mask) >> 8;

unsigned char red = (pixel & red_mask) >> 16;

data[ii + 2] = blue;

data[ii + 1] = green;

И затем python-файл:

from PIL import Image

AbsLibPath = os.path.dirname(os.path.abspath(__file__)) + os.path.sep + LibName

objlength = size * 3

grab.getScreen(x1,y1, w, h, result)

return Image.frombuffer(‘RGB’, (w, h), result, ‘raw’, ‘RGB’, 0, 1)

if __name__ == ‘__main__’:

Крос сп латформенное решение с использованием wxPython :

wx.App() # Необходимо создать экземпляр приложения, прежде чем что-либо делать

bmp = wx.EmptyBitmap(size[0], size[1])

mem.Blit(0, 0, size[0], size[1], screen, 0, 0)

del mem # Release bitmap

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Скриншот экрана python linux

Скриншоты python

Всем привет. Сегодня мы рассмотрим как делать скриншоты в python используя модуль pyautogui. Поехали!

Для начала подключаем модуль pyautogui.

И теперь для того чтобы сделать скриншот, достаточно воспользоваться методом screenshot() который предоставляет нам данный модуль.

В результате выполнения данного кода мы сделаем скриншот всего экрана. Сам скриншот сохранится в виде изображения с названием screenshot и в формате png. Которые мы указали в самом методе screenshot(). Найти изображение вы сможете рядом с файлом программы. На выходе метод screenshot() возвращает объект изображения.

Если мы хотим сделать скриншот определенной части экрана. Можно воспользоваться свойством region.

Здесь в свойстве region мы указали что у нас будет снят левый верхний угол размером 300×400 пикселей. То есть первые две координаты(0,0) отвечают за левый верхний угол, а вторые(300, 400) за размер области экрана.

Читайте также:  Windows 10 rtm escrow что это такое

Вот мы у научились делать скриншоты в python. Помимо этого модуль pyautogui предоставляет нам возможность нахождения кусочков изображения в области где мы осуществляем скриншот.

Допустим у меня есть такой кусочек изображения.

Кто не знает это значок браузера mozilla firefox.

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

Для этого я использую метод locateOnScreen() и в качестве аргумента передаю ему изображение со значком.

В результате работы данный метод возвращает координаты где было найдено соответствие с изображением значка в области всего экрана.

Если я к примеру удалю ярлык браузера mozilla firefox из области экрана. Следовательно соответствия метод locateOnScreen() уже не найдет и нам вернется значение None.

Вот так с помощью метода locateOnScreen() вы можете в области экрана искать соответствия по картинке шаблону.

На этом у меня все. Надеюсь данная статья была для вас полезна. Если остались вопросы пишите их в комментариях к данной статье или группе в

А я с вами прощаюсь. Желаю успехов и удачи! Пока.

Оцените статью:

Статьи

Комментарии

Внимание. Комментарий теперь перед публикацией проходит модерацию

Все комментарии отправлены на модерацию

Запись экрана

Данное расширение позволяет записывать экран и выводит видео в формате webm

Источник

Сделайте снимок экрана с помощью скрипта python. [Linux]

Я хочу сделать скриншот через скрипт python и ненавязчиво сохранить его.

меня интересует только решение Linux,и я должен поддерживать любую среду на основе X.

15 ответов

это работает без использования scrot или ImageMagick.

собрать все ответы в одном классе. Выводит изображение PIL.

просто для полноты: Xlib-но это несколько медленно при захвате всего экрана:

можно попытаться обработать некоторые типы в узких местах-файлах в PyXlib, а затем скомпилировать их с помощью Cython. Это может немного увеличить скорость.

Edit: Мы можем написать ядро функции в C, а затем использовать его в python из ctypes, вот что я взломал вместе:

и тогда питон-файл:

это работает на X11, и, возможно, на Windows тоже (кто-то, пожалуйста, проверьте). Должен в составе PyQt4:

у меня есть проект фантик (pyscreenshot) для мошонки, imagemagick, pyqt, wx и pygtk. Если у вас есть один из них, вы можете использовать его. Все решения включены в это обсуждение.

кросс-платформенное решение с использованием wxPython, в:

для этого требуется библиотека изображений Python

короткий поиск появился gtkShots похоже, это может помочь вам, так как это программа gpled python screenshot, поэтому в ней должно быть то, что вам нужно.

для этого есть пакет python Autopy

модуль растрового изображения может отображать захват (bitmap.capture_screen) Это multiplateform (Windows, Linux, Osx).

бит поздно, но nevermind легко один

Читайте также:  Msstdfmt dll windows 64 bit

Я не мог сделать скриншот в Linux с помощью pyscreenshot или scrot, потому что вывод pyscreenshot был просто черный экран png файл изображения.

но, слава богу, был еще один очень простой способ сделать скриншот в Linux без установки чего-либо. просто поместите ниже код в свой каталог и запустите с python demo.py

также есть много доступных вариантов для gnome-screenshot —help

Это старый вопрос. Я хотел бы ответить на него, используя новые инструменты.

работает с python 3 (должен работать с python 2, но я его не тестировал) и PyQt5.

минимальный рабочий пример. Скопируйте его в оболочку python и получите результат.

Источник

Сделайте снимок экрана с помощью скрипта python. [Linux]

Я хочу сделать скриншот с помощью скрипта Python и ненавязчиво сохранить его.

Я заинтересован только в решении Linux и должен поддерживать любую среду на основе X.

15 ответов:

это работает без использования мошонки или ImageMagick.

собрать все ответы в одном классе. Выводит изображение PIL.

просто для полноты: Xlib-но это несколько медленно при захвате всего экрана:

можно попробовать тронуть некоторые типы в узких местах-файлах в PyXlib, а затем скомпилировать его с помощью Cython. Это может немного увеличить скорость.

Edit: Мы можем написать ядро функции на C, а затем использовать его в python из ctypes, вот что я взломал вместе:

это работает на X11, и, возможно, на Windows тоже (кто-то, пожалуйста, проверьте). Потребности PyQt4:

у меня есть проект фантик (pyscreenshot) для мошонки, imagemagick, pyqt, wx и pygtk. Если у вас есть один из них, вы можете использовать его. Все решения включены из этого обсуждения.

кросс-платформенное решение с использованием wxPython:

для этого требуется библиотека изображений Python

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

растровый модуль для экрана захвата (растровое изображение.capture_screen) Он является мультиплатформенным (Windows, Linux, Osx).

немного поздно, но nevermind легко один

Я не мог сделать скриншот в Linux с pyscreenshot или scrot, потому что вывод pyscreenshot был просто черный экран png файл изображения.

но, слава богу, был еще один очень простой способ сделать снимок экрана в Linux без установки чего-либо. просто поместите код ниже в свой каталог и запустите с python demo.py

также есть много доступных вариантов для gnome-screenshot —help

Это старый вопрос. Я хотел бы ответить на него с помощью новых инструментов.

работает с python 3 (должен работать с python 2, но я его не тестировал) и PyQt5.

минимальный рабочий пример. Скопируйте его в оболочку python и получите результат.

Источник

Оцените статью