Heim >Backend-Entwicklung >Python-Tutorial >So erstellen Sie einen Screenshot in Python

So erstellen Sie einen Screenshot in Python

尚
Original
2019-06-29 15:05:318009Durchsuche

So erstellen Sie einen Screenshot in Python

Python bietet viele Möglichkeiten, Computer-Screenshots zu erhalten, wie folgt:

ImageGrab-Modul in PIL

Windows-API

PyQt

pyautogui

ImageGrab-Modul in PIL

import time
import numpy as np
from PIL import ImageGrab

img = ImageGrab.grab(bbox=(100, 161, 1141, 610))
img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)

Die Verwendung des ImageGrab-Moduls in PIL ist einfach, aber die Effizienz ist etwas gering.

Windows-API

Rufen Sie die Windows-API auf, die schnell, aber kompliziert zu verwenden ist. Ich werde hier nicht auf Details eingehen, da es PyQt gibt, das besser zu verwenden ist.

PyQt

PyQt ist viel einfacher als der Aufruf der Windows-API und bietet viele Vorteile der Windows-API, wie z. B. hohe Geschwindigkeit und die Möglichkeit, das abzurufende Fenster anzugeben, selbst wenn Das Fenster ist blockiert. Es ist zu beachten, dass bei minimiertem Fenster keine Screenshots erstellt werden können.

Zuerst müssen Sie den Griff des Fensters besorgen.

import win32gui
hwnd_title = dict()
def get_all_hwnd(hwnd,mouse):
    if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):
        hwnd_title.update({hwnd:win32gui.GetWindowText(hwnd)})

win32gui.EnumWindows(get_all_hwnd, 0)
 
for h,t in hwnd_title.items():
    if t is not "":
        print(h, t)

Das Programm druckt den Hintergrund und den Titel des Fensters. Mit dem Titel können Sie einen Screenshot machen.

    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtGui import *
    import win32gui
    import sys

    hwnd = win32gui.FindWindow(None, 'C:\Windows\system32\cmd.exe')
    app = QApplication(sys.argv)
    screen = QApplication.primaryScreen()
    img = screen.grabWindow(hwnd).toImage()
    img.save("screenshot.jpg")

pyautogui

pyautogui ist relativ einfach, kann jedoch nicht das Fenster zum Abrufen des Programms angeben, sodass das Fenster nicht blockiert werden kann. Es kann jedoch den Speicherort des Screenshots angeben 0,04 s, was etwas schneller als PyQt ist. Langsamer, aber schneller.

import pyautogui
import cv2

img = pyautogui.screenshot(region=[0,0,100,100]) # x,y,w,h
# img.save('screenshot.png')
img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)

Weitere technische Artikel zum Thema Python finden Sie in der Spalte Python-Tutorial, um mehr darüber zu erfahren!

Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen Screenshot in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn