Module ImageGrab de Pillow

ImageGrab permet aux utilisateurs de capturer l'écran ou une région spécifiée sous forme d'image, et de l'enregistrer dans un fichier image ou d'effectuer un traitement ultérieur.

Le module ImageGrab convient à des scénarios tels que les tests automatisés, l'assistance à l'enregistrement d'écran et la reconnaissance d'images.

Méthode d'import :

from PIL import ImageGrab

Méthodes principales d'ImageGrab

Le tableau suivant répertorie les principales méthodes du module ImageGrab et leurs descriptions :

Méthode Description Parameters Valeur de retour
ImageGrab.grab() Capturer une image de l'écran entier ou d'une région spécifiée bbox(Facultatif) : Tuple spécifiant la région de la capture d'écran(x1, y1, x2, y2), la valeur par défaut est l'écran entier PIL.ImageObject
ImageGrab.grabclipboard() Obtenir une image à partir du presse-papiers du système Aucune PIL.ImageObjet (si le presse-papiers contient une image), sinonNone
ImageGrab.grab_to_file() Capturer l'écran et l'enregistrer directement dans un fichier (obsolète, il est recommandé d'utilisergrab().save()) filename: Chemin de fichier pour l'enregistrement Aucune

Description détaillée de la méthode

ImageGrab.grab()

Fonction:
Capturer une image de l'écran ou d'une région spécifiée.

Parameters:

  • bbox(Facultatif) : Un tuple de quatre éléments(x1, y1, x2, y2), définissant la région de capture d'écran. Par défaut, capture tout l'écran.

Exemple de code:

Exemple

from PIL import ImageGrab

# Capturer tout l'écran
screenshot = ImageGrab.grab()
screenshot.save("full_screen.png")

# Capturer une région spécifiée (du coin supérieur gauche (100, 100) au coin inférieur droit (500, 500))
partial_screenshot = ImageGrab.grab(bbox=(100, 100, 500, 500))
partial_screenshot.save("partial_screen.png")

ImageGrab.grabclipboard()

Fonction:
Obtenir les données d'image à partir du presse-papiers système (par exemple après avoir pris une capture d'écran et appuyé surCtrl+Cimage copiée).

Valeur de retour:

  • Si le presse-papiers contient une image, renvoiePIL.Imageobjet.
  • Sinon renvoieNone。

Exemple de code:

Exemple

from PIL import ImageGrab

# Obtenir une image depuis le presse-papiers
clipboard_image = ImageGrab.grabclipboard()

if clipboard_image:
    clipboard_image.save("clipboard_image.png")
else:
    print("Aucune donnée d'image dans le presse-papiers")

ImageGrab.grab_to_file()(Obsolète)

Remarque:
Cette méthode est obsolète dans les versions plus récentes de Pillow. Il est recommandé d'utilisergrab().save()comme remplacement.

Exemple de code de remplacement:

Exemple

from PIL import ImageGrab

# Approche alternative : d'abord grab() puis save()
screenshot = ImageGrab.grab()
screenshot.save("screenshot.png")

Exemples d'applications pratiques

Outil de capture d'écran planifié

Exemple

import time
from PIL import ImageGrab

# Prendre une capture d'écran toutes les 5 secondes, 3 fois au total
for i in range(3):
    screenshot = ImageGrab.grab()
    screenshot.save(f"screenshot_{i+1}.png")
    time.sleep(5)

Analyse d'écran en temps réel avec OpenCV

Exemple

import numpy as np
from PIL import ImageGrab
import cv2

# Capturer et afficher l'écran en temps réel
while True:
    screenshot = ImageGrab.grab()
    img_np = np.array(screenshot)  # Convertir en tableau NumPy
    cv2.imshow("Capture d'écran", cv2.cvtColor(img_np, cv2.COLOR_RGB2BGR))
   
    if cv2.waitKey(1) & 0xFF == ord('q'):  # Appuyez sur 'q' pour quitter
        break

cv2.destroyAllWindows()

Notes

  1. Prise en charge multiplateforme:

    • Windows : entièrement pris en charge.
    • macOS : autorisations supplémentaires requises (activez le terminal ou l'IDE dansSystem Settings > Privacy & Security > Screen Recording).
    • Linux : dépend deX11ouWayland, il peut être nécessaire d'installerscrotoumaimet d'autres outils.
  2. Optimisation des performances:

    • Des captures d'écran fréquentes peuvent affecter les performances du système. Il est recommandé de définir un intervalle de capture d'écran raisonnable.
  3. Traitement d'images:

    • L'image capturée peut être directement traitée à l'aide d'autres modules Pillow (tels queImageFilter) pour un traitement ultérieur.

J'espère que ce tutoriel vous aidera à maîtriser rapidementImageGrabl'utilisation du module !

Autres extensions