PHPはスクリーンショットを実現するためにGDライブラリを使用します
PHP5.2.2以降のGDライブラリでは、imagegrabscreenとimagegrabwindowという2つのスクリーンショット関数が実装されています
それぞれ画面全体をキャプチャする場合と、特定のウィンドウの画面をキャプチャする場合 (ALT+PrintScreen と同じ) に使用されます。
1. 画面全体のスクリーンショットを撮ります
$im = imagegrabscreen () ;
imagepng ( $im , " myscreenshot.png " ) ;
?>
2. ウィンドウをキャプチャします (IE など)
$browser = 新しい COM ( " InternetExplorer.Application " ) ;
$ハンドル = $ブラウザ ->
$browser -> 表示 = true ;
$im = imagegrabwindow ( $handle ) ;
$browser -> 終了 () ;
imagepng ( $im , " iesnap.png " ) ;
$im = imagegrabscreen () ;
?>
3. ウィンドウ (IE など) をその内容とともにキャプチャします!
$browser = 新しい COM ( " InternetExplorer.Application " ) ;
$ハンドル = $ブラウザ ->
$browser -> 表示 = true ;
$browser -> ナビゲート ( " http://www.21andy.com/blog/ " ) ;
/* まだ働いていますか */
while ( $browser -> ビジー ) {
com_message_pump ( 4000 ) ;
}
$im = imagegrabwindow ( $handle , 0 ) ;
$browser -> 終了 () ;
imagepng ( $im , " iesnap.png " ) ;
?>
4. 全画面モードで IE をキャプチャします
$browser = 新しい COM ( " InternetExplorer.Application " ) ;
$ハンドル = $ブラウザ ->
$browser -> 表示 = true ;
$browser -> フルスクリーン = true ;
$browser -> ナビゲート ( " http://www.21andy.com/blog/ " ) ;
/* 完全にロードされていますか (フレームに注意してください!)*/
while ( $browser -> ビジー ) {
com_message_pump ( 4000 ) ;
}
$im = imagegrabwindow ( $handle , 0 ) ;
$browser -> 終了 () ;
imagepng ( $im , " iesnap.png " ) ;
?>
例として Internet Example Explorer を使用します。IE や com をさらに使用したい場合は、MSDN で IBrowser2 のドキュメントを参照してください。正しいハンドル (通常は $obj-> ) を指定すれば、どの種類のウィンドウでも動作するはずです。 HWND).
* 5.2.x スレッド セーフ ビルド用の php_gd2.dll
*php gd イメージドキュメント
* IE マニュアル (com_dotnet から微調整するのに役立ちます
)
テスト中、マニュアルに記載されている効果は得られませんでしたが、真っ黒な画像が表示されました。これはなぜですか?
2 つの状況が考えられます。1 つ目は、IE ブラウザーがないため、この COM コンポーネントが WINDOWS サーバーにのみ適用されるということです。2 つ目は、サービスがデスクトップと対話できるようにするためにサービスが有効になっていないということです。 ! 2 番目のケースは最も一般的です (デフォルトでは閉じられています)。 [コンピューター] -> [管理] -> [Apache] をクリックします。 ; 右クリック -> [プロパティ] -> [ログイン] -> [サービスのデスクトップとの対話を許可] を選択します。
2 番目の場合は、Apache 統合パッケージをインストールしました。この場合、Apache サービスの場所が見つからないため、2 番目の方法のセットアップに成功した場合は、教えていただければ幸いです。いくつかのアドバイス。
張大鵬より抜粋