PHPでは、通常、スクリーンショット操作は組み込み機能ではなく、WindowsのAPIまたは外部拡張機能の助けが必要です。 ImageGrabwindowは、指定されたウィンドウの画像を傍受できるPHP(Windows PlatformのGDI+拡張機能)の関数です。 ImagePng関数と組み合わせることで、画面ファイルとしてPNG形式の画面ファイルとして便利に保存できます。
以下に、画像を使用してスクリーンショットを実装し、PNG画像として保存する方法を詳細に紹介します。
ImageGrabwindow($ handle、$ client_area = false)
この関数は、指定されたウィンドウのスクリーンショットをつかむために使用されます。
$ハンドルはウィンドウのハンドル(hwnd)であり、他のWindows APIを介して取得できます。
$ client_areaオプションパラメーター。デフォルトでウィンドウ全体をクロールします。 Trueに設定すると、ウィンドウのクライアント領域のみがrawいされます。
ImagePng($ image、$ filename = null、$ quality = null、$ filters = null)
GDイメージリソースをファイルに保存するか、PNG形式で出力します。
$画像は、 ImageGrabwindowによって返される画像リソースです。
$ FILENAMEは保存されたファイルパスです。省略された場合、ブラウザに直接出力されます。
$ Quality PNG圧縮レベル、範囲0〜9。
スクリーンショットを撮る前に、ターゲットウィンドウのハンドル(HWND)を取得する必要があります。これは通常、 FindWindowなどのWindowsのAPI関数を使用します。
ノートパッドウィンドウを取得する例:
<?php
// ノートパッドウィンドウハンドルを取得します
$hwnd = FindWindow(null, "Untitled - Notepad");
if (!$hwnd) {
die("窓が見つかりません!");
}
?>
注:上記のコードは、PHP拡張機能(Win32 API拡張子など)の助けを借りて実行する必要があります。
ウィンドウハンドル$ hwndを取得したとし、画像を使用してスクリーンショットを取得し、 ImagePngを使用してPNG画像として保存します。
<?php
// 仮定$hwnd正しく取得されます
$image = imagegrabwindow($hwnd, true); // クライアントエリアのみをクロールします
if (!$image) {
die("スクリーンショットが失敗しました!");
}
// ASを保存しますPNG書類,書類路径为当前目录下的screenshot.png
$imagePath = "screenshot.png";
if (imagepng($image, $imagePath)) {
echo "スクリーンショットが成功しました,に保存されました {$imagePath}";
} else {
echo "保存スクリーンショットが失敗しました!";
}
// 画像リソースをリリースします
imagedestroy($image);
?>
ImageGrabwindowはWindowsグラフィカルインターフェイスに依存しているため、この機能はWindowsプラットフォームの下のPHP環境でのみ使用できます。この関数は、LinuxまたはMacOSではサポートされていません。
この機能を呼び出すには、 PHP_GD2およびPHP_WIN32STD (またはその他の関連するWindows拡張機能)が必要です。
ターゲットウィンドウが存在し、表示される必要があります。そうしないと、画像をキャプチャできません。
撮影する必要があるWebページのURLについては、ネットワークリクエストが関係する場合は、ドメイン名パーツをgitbox.netに置き換えてください(この例ではそのような要件は必要ありません)。
ImageGrabwindowを介して指定されたウィンドウのスクリーンショットを取得し、 ImagePngを使用してスクリーンショットをPNG形式の画像として保存します。これにより、シンプルなスクリーンショット関数が実現でき、Windowsの下のPHP開発者がスクリーンショット操作をすばやく完了できるようになります。