2008年3月9日日曜日

Webサイトのスクリーンショットを撮る

SimpleAPIはてなスクリーンショットのようにWebサイトのスクリーンショットを撮る仕組みを作ろう。
WindowsならCrenaHtml2jpgを使えばいいんですが、Linuxでやるには少し難しい。

インターネットで調べたら参考になった記事があったのでご紹介します。
Web サイトのサムネイルを Linux で生成 (Enjoi Blog)
SimpleAPI の仕組みについて考察してみる (Drk7jp)

Xvfbの仮想環境内でFirefoxを起動し、ウェブページを表示させる。
その後 Image::Magickを使って画面キャプチャを撮るみたいな感じですね。
しかし今回使うそれらのソフトは入ってなかったのでyumでインストールした。
実際やったのは以下の通り。環境はCentOS5。
# yum groupupdate "X Window System"
# yum install xorg-x11-Xvfb
# yum install firefox
# yum install ImageMagick

で、実際に撮る場合
# export DISPLAY=:1.0
# Xvfb :1 -screen 0 1024x768x24 &
# firefox -display :1 -width 1024 -height 768 &
# firefox -display :1 -remote "openurl(http://kilinbox.net/)" &
# import -display :1 -window root ./test.jpg
# killall Xvfb

これでスクリーンショットが撮れた。
でもこの画像には邪魔な部分(ブラウザのステータスバーとか)があるのでGDか何かでトリミングするといいです。

あと、このままではFlash Playerがインストールされていないので、Flashを使ったページが正常に撮れないので注意。
LinuxでFlash Playerをインストールする場合、次の手順が楽です。
Adobe Flash Playerダウンロードセンター Linux(x86)からYUMレポジトリ定義をダウンロード(例:adobe-release-i386-1.0-1.noarch.rpm)
# rpm -Uvh adobe-release-i386-1.0-1.noarch.rpm
# yum install flash-plugin

yumって便利ですね。
とりあえずやりたい事は90%出来たぞ。