Heim >Backend-Entwicklung >Python-Tutorial >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!