Trois méthodes de Python pour réaliser des captures d'écran [code détaillé + complet]

la vie est trop courte j'utilise python

Comment réaliser une capture d'écran avec python ?

insérez la description de l'image ici

1. Méthode 1

Module ImageGrab dans PIL

L'utilisation du module ImageGrab dans PIL est simple, mais un peu inefficace

PIL est la Python Imaging Library,
qui fournit des capacités d'édition d'images pour l'interpréteur Python.

Le module ImageGrab peut être utilisé pour copier le contenu de l'écran ou du presse-papiers dans la mémoire d'images PIL.
La méthode PIL.ImageGrab.grab() prend une capture d'écran.

Les pixels à l'intérieur de la boîte englobante sont renvoyés sous forme d'image "RVB" sous Windows,

Renvoyé en tant que "RGBA" sur macOS.

Si la boîte englobante est omise, tout l'écran est copié.

import numpy as np
from PIL import ImageGrab, Image
import cv2
 
img = ImageGrab.grab(bbox=(0, 0, 1920, 1080))  # bbox 定义左、上、右和下像素的4元组
print(img.size[1], img.size[0])
img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
print(img)#python学习交流:903971231#
cv2.imwrite('screenshot1.jpg', img)
# img = Image.fromarray(img)
# img.save('screenshot1.jpg')

2. Méthode 2

PyQt est beaucoup plus simple que d'appeler l'API Windows,

Et il présente de nombreux avantages de l'API Windows, tels que la vitesse rapide,

La fenêtre à obtenir peut être spécifiée même si la fenêtre est masquée.

Il convient de noter que les captures d'écran ne peuvent pas être prises lorsque la fenêtre est réduite.

Vous devez d'abord obtenir la poignée de la fenêtre.

import win32gui
from PyQt5.QtWidgets import QApplication
import sys
 
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)})
#python学习交流:903971231#
 
win32gui.EnumWindows(get_all_hwnd, 0)
# print(hwnd_title.items())
for h, t in hwnd_title.items():
    if t != "":
        print(h, t)
 
# 程序会打印窗口的hwnd和title,有了title就可以进行截图了。
hwnd = win32gui.FindWindow(None, 'C:\Windows\system32\cmd.exe')
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
img = screen.grabWindow(hwnd).toImage()
img.save("screenshot2.jpg")

3. Méthode 3

pyautogui est relativement simple,

Mais vous ne pouvez pas spécifier la fenêtre pour obtenir le programme,

Par conséquent, la fenêtre ne peut pas être bloquée,

Cependant, vous pouvez spécifier l'emplacement de la capture d'écran

import pyautogui
import cv2  # https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv
import numpy as np
from PIL import Image
 
img = pyautogui.screenshot(region=[0, 0, 1920, 1080])  # x,y,w,h
 
# img = Image.fromarray(np.uint8(img))
# img.save('screenshot3.png')
img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)  # cvtColor用于在图像中不同的色彩空间进行转换,用于后续处理。
cv2.imwrite('screenshot3.jpg', img)

insérez la description de l'image ici
insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/xff123456_/article/details/128501167
conseillé
Classement