次のコードは、Windows でのみ使用できます。
<?php
...
$im = imagegrabwindow($handle);
...
imagedestroy($im);
?>
unix (debian) php 環境での解決策は何ですか? php cli プログラムでスクリーン キャプチャを取得しますか?
次のコードは、Windows でのみ使用できます。
<?php
...
$im = imagegrabwindow($handle);
...
imagedestroy($im);
?>
unix (debian) php 環境での解決策は何ですか? php cli プログラムでスクリーン キャプチャを取得しますか?
つまり、Firefox から画面をキャプチャしたいようですね :p.
ヘッドレス サーバーの場合は、最初に Xvfb がインストールされていることを確認してから起動しXvfb :2 -screen 0 1024x768x24&
ます (もちろん、必要に応じてディスプレイ:2と解像度1024x768x24を変更できます)。
Firefox を実行して、そのディスプレイで特定のページを開きます。Firefox がページを開くのを少し待つので、aなどを実行します。DISPLAY=:2 firefox http://www.example.com
sleep 10
そして、ImageMagick(もちろんインストールする必要があります)からいくつかの「魔法」を投入して、画面をファイルにキャプチャします:import -window root -display :2 example.png
.
そして今、あなたの処理の楽しみが始まります:p.
以下は、すべてをまとめた小さな bash スクリプトです (Xvfb が動作するためには、既に実行されている必要があります)。
#!/bin/bash
export DISPLAY=":2" /usr/bin/firefox "$1"&
/bin/sleep 10
/usr/bin/import -window root -display :2 "$2"
killall firefox-bin
これを PHP から呼び出し、スクリーンショットの URL とファイル名をパラメーターとして指定します。
ところで、サーバーに X がある場合は、Xvfb 部分をスキップして、実行中の X サーバー表示を使用できます (ほとんどの場合:0)。