PHP+Windowsでスクリーンショットやサムネイル作成
うわ。これ良い。
で、WindowsXP SP2+IE7なマシンで実際に試してみましたが、スクリーンショットは
Windowsだけだが、COMで取ったウィンドウハンドルからウィンドウの画像をキャプチャする機能をPHPのGD拡張に追加した、という話が。
のような感じで撮れました。サムネイルは実際にIEがポコポコ立ち上がってキャプチャしてるんだ。。。へぇ、、これは楽だ。
ちなみに、フルスクリーンじゃないとウィンドウ枠が残ってしまいますが、解像度によってはでかいpngができてしまうので、キャプチャした画像をリサイズするとなると、こんな感じでしょうか。
<?php $browser = new COM("InternetExplorer.Application"); $handle = $browser->HWND; $browser->Visible = true; $browser->FullScreen = true; $browser->Navigate("http://www.doyouphp.jp/"); /* Is it completely loaded? (be aware of frames!)*/ while ($browser->Busy) { com_message_pump(4000); } $im = imagegrabwindow($handle, 0); $browser->Quit(); $new_x = 320; $new_y = imagesy($im) * $new_x / imagesx($im); $newim = imagecreatetruecolor($new_x, $new_y); imagecopyresized($newim, $im, 0, 0, 0, 0, $new_x, $new_y, imagesx($im), imagesy($im)); imagepng($newim, "test.png");
で、こんな感じになります。
うーん。リサイズはImage magick使った方がヨサゲかも。
追記
id:moriyoshiさんから「imagecopyresampledを使っては?」というコメントを頂いたので、先のコードをs/imagecopyresized/imagecopyresampled/ しただけのコードで試してみました。結果は以下のような感じになります。
ををーっ。これなら良い感じですね。ありがとうございます :-)