En PHP, les opérations de capture d'écran ne sont généralement pas des fonctions intégrées et nécessitent l'aide de l'API de Windows ou des extensions externes. ImageGrabWindow est fonction de PHP (fonction d'extension GDI + sous la plate-forme Windows), qui peut intercepter les images de la fenêtre spécifiée. Combiné avec la fonction ImagePNG , vous pouvez enregistrer facilement les captures d'écran sous forme de fichiers d'image au format PNG.
Ci-dessous, nous présenterons en détail comment utiliser ImageGrabWindow pour implémenter des captures d'écran et les enregistrer sous forme d'images PNG.
ImageGrabWindow ($ manche, $ client_area = false)
Cette fonction est utilisée pour saisir des captures d'écran de la fenêtre spécifiée.
$ La poignée est la poignée (hwnd) de la fenêtre et peut être obtenue via d'autres API de Windows.
$ client_area Paramètre facultatif, qui explore la fenêtre entière par défaut. Si elle est définie sur true , seule la zone client de la fenêtre est rampée.
imagepng ($ image, $ filename = null, $ qualité = null, $ filters = null)
Enregistrez les ressources d'image GD dans un fichier ou une sortie au format PNG.
$ Image est une ressource d'image renvoyée par ImageGrabWindow .
$ nom de fichier est le chemin de fichier enregistré, s'il est omis, il sera sorti directement au navigateur.
$ Niveau de compression PNG de qualité , plage 0-9.
Avant de prendre une capture d'écran, vous devez obtenir la poignée (HWND) de la fenêtre cible. Cela utilise généralement les fonctions de l'API de Windows, telles que FindWindow .
Exemple pour obtenir la poignée de la fenêtre du bloc-notes:
<?php
// Obtenez la poignée de la fenêtre du bloc-notes
$hwnd = FindWindow(null, "Untitled - Notepad");
if (!$hwnd) {
die("La fenêtre n'est pas trouvée!");
}
?>
Remarque: Le code ci-dessus doit être exécuté à l'aide d'extensions PHP (telles que les extensions de l'API WIN32).
Supposons que nous ayons obtenu la poignée de fenêtre $ hwnd , puis utilisez ImageGrabWindow pour obtenir la capture d'écran et enregistrez-la sous forme d'image PNG avec ImagePng .
<?php
// Hypothèses$hwndCorrectement obtenu
$image = imagegrabwindow($hwnd, true); // Crawl uniquement la zone du client
if (!$image) {
die("La capture d'écran a échoué!");
}
// Sauver en tant quePNGdocument,document路径为当前目录下的screenshot.png
$imagePath = "screenshot.png";
if (imagepng($image, $imagePath)) {
echo "Capture d'écran réussie,Sauvé à {$imagePath}";
} else {
echo "保存La capture d'écran a échoué!";
}
// Libérez des ressources d'image
imagedestroy($image);
?>
Cette fonctionnalité n'est disponible que dans des environnements PHP sous la plate-forme Windows, car ImageGrabWindow repose sur l'interface graphique Windows. Cette fonction n'est pas prise en charge sur Linux ou MacOS.
PHP_GD2 et PHP_WIN32STD (ou d'autres extensions Windows associées) sont nécessaires pour appeler cette fonctionnalité.
La fenêtre cible doit exister et être visible, sinon l'image ne peut pas être capturée.
Pour les URL dans les pages Web qui doivent être prises, si les demandes de réseau sont impliquées, veuillez remplacer la pièce de nom de domaine par gitbox.net (aucune exigence de ce type n'est requise dans cet exemple).
Obtenez des captures d'écran de la fenêtre spécifiée via ImageGrabWindow , puis utilisez ImagePNG pour enregistrer les captures d'écran sous forme d'images de format PNG, qui peuvent réaliser la fonction de capture d'écran simple, ce qui le rend pratique pour les développeurs PHP sous Windows pour compléter rapidement les opérations d'écran.