今回はLinuxサーバーでWEBページのサムネイルを取得する方法を紹介します。
基本的な考え方は『実際にブラウザを起動してスクリーンショットを取る』です。
サーバーにXWindow、Firefoxをインストールするのは何か気持ち悪い気がして、
他の方法で実現出来ないか探ってみたのですが今のところこれがベストです。
必要パッケージをインストール(Xvfb + Firefox + ImageMagick)
■CentOS5の場合で紹介します
X Windowインストール
yum -y groupupdate "X Window System" yum -y install xorg-x11-server-Xvfb
Firefoxインストール
yum -y install firefox yum -y install flash-plugin
そのままの設定だと「killall」でFirefoxを終了させると次に起動した際に「セッション復元」に関するメッセージが表示されたり、ポップアップが出たりとコマンドからサムネイルを生成する場合に邪魔になるものがあります。
pref.jsを書き換えてサムネイル生成に不必要な設定を変更。
user_pref("browser.sessionstore.enabled", false); user_pref("browser.sessionstore.resume_from_crash", false); user_pref("browser.startup.page", 0); user_pref("plugin.default_plugin_disabled", false); user_pref("privacy.popups.disable_from_plugins", 3); user_pref("alerts.totalOpenTime", 1); user_pref("security.enable_ssl2", false); user_pref("security.enable_ssl3", false);
ImageMagickインストール
yum -y install ImageMagick
ブラウザ起動・スクリーンショットの流れ
1.ディスプレイの環境変数設定
# DISPLAY=:1.0 # export DISPLAY
2.Xvfbを起動
# Xvfb :1 -screen 0 1024x768x24 > /dev/null &
3.URLを指定してFirefox起動
# firefox -width 1024 -height 800 http://plusmb.jp > /dev/null &
4.ブラウザ以外の無駄な領域を削ってスクリーンショット
# WINID=`xwininfo -root -tree | grep "Mozilla Firefox" | head -n 1 | sed -e 's/^[ ]*//' | cut -f 1 -d ' '` # xwd -id $WINID -out thumnail.xwd
5.ImageMagickを利用して、サムネイル画像をGIF画像に変換
convert thumnail.xwd thumnail.gif
6.Xvfb、Firefoxを終了
killall firefox Xvfb
参考サイト
lovebug.jp – Webページのスクリーンショットを撮る方法(Xvfb + Firefox + ImageMagick)
pomo123の日記 – http://d.hatena.ne.jp/pomo123/20080430/1209532590
Drk7jp – SimpleAPI の仕組みについて考察してみる
ワザップ!チームブログ – コマンドでスクリーンショットを撮ってみる – Linux