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
# 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, renvoie
PIL.Imageobjet. - Sinon renvoie
None。
Exemple de code:
Exemple
# 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
# 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
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
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
Prise en charge multiplateforme:
- Windows : entièrement pris en charge.
- macOS : autorisations supplémentaires requises (activez le terminal ou l'IDE dans
System Settings > Privacy & Security > Screen Recording). - Linux : dépend de
X11ouWayland, il peut être nécessaire d'installerscrotoumaimet d'autres outils.
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.
Traitement d'images:
- L'image capturée peut être directement traitée à l'aide d'autres modules Pillow (tels que
ImageFilter) pour un traitement ultérieur.
- L'image capturée peut être directement traitée à l'aide d'autres modules Pillow (tels que
J'espère que ce tutoriel vous aidera à maîtriser rapidementImageGrabl'utilisation du module !