Tres métodos de Python para lograr capturas de pantalla [detallado + código completo]

la vida es demasiado corta yo uso python

¿Cómo realizar una captura de pantalla con python?

inserte la descripción de la imagen aquí

1. Método 1

Módulo ImageGrab en PIL

Usar el módulo ImageGrab en PIL es simple, pero un poco ineficiente

PIL es la biblioteca de imágenes de Python,
que proporciona capacidades de edición de imágenes para el intérprete de Python.

El módulo ImageGrab se puede utilizar para copiar el contenido de la pantalla o el portapapeles en la memoria de imágenes PIL.
El método PIL.ImageGrab.grab() toma una captura de pantalla.

Los píxeles dentro del cuadro delimitador se devuelven como una imagen "RGB" en Windows,

Devuelto como "RGBA" en macOS.

Si se omite el cuadro delimitador, se copia toda la pantalla.

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étodo 2

PyQt es mucho más simple que llamar a la API de Windows,

Y tiene muchas ventajas de la API de Windows, como velocidad rápida,

La ventana a obtener se puede especificar incluso si la ventana está oculta.

Cabe señalar que no se pueden tomar capturas de pantalla cuando la ventana está minimizada.

Primero necesitas obtener el mango de la ventana.

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étodo 3

pyautogui es relativamente simple,

Pero no puede especificar la ventana para obtener el programa,

Por lo tanto, la ventana no se puede bloquear,

Sin embargo, puede especificar la ubicación de la captura de pantalla

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)

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/xff123456_/article/details/128501167
Recomendado
Clasificación