Time to Read
3分
Gtk::MozEmbed を使う
- Webサイトのスクリーンショットを撮るサービスの作り方
- Gtk::MozEmbed sample
- Webページのスクリーンショットを撮る方法(Xvfb + Firefox + ImageMagick)
上記のサイトを参考に準備。環境は例によってUbuntu 64bit(Lucid Lynx)。
libgtk-mozembed-ruby をインストール。また、キャプチャを取る関係で、 libgdk-pixbuf2-ruby 、仮想フレームバッファ – XvfcXvfbと、それを動かすためdaemonを入れておく。
1 | sudo aptitude install xvfb daemon libgtk-mozembed-ruby libgdk-pixbuf2-ruby |
あとは、こんな感じのコマンドです。ここのブロックの操作は、デスクトップでは不要です。
1 2 3 | sudo daemon -X "/usr/bin/Xvfb :1 -screen 0 1024x768x24" --name Xvfb # FYI 停止 sudo daemon --stop --name Xvfb export DISPLAY=:1.0 |
MozSnapshooterのソースをMozEmbedサンプルサイトから取ってきます。(何か消えそうなのでミラー: gist: 861565 後述の変更を適用済みです)このままでは動かないので、以下を修正。
1 2 3 4 | 23c23 < self.child.chrome_mask = Gtk::MozEmbed::ALLCHROME --- > # self.child.chrome_mask = Gtk::MozEmbed::ALLCHROME |
あと、以下の修正をしとくと、スクリーンショットが綺麗だったり、URL指定できたり、何かと便利になります。
1 2 3 4 5 6 7 8 9 10 | 26c26 < self.child.location = "http://www.ruby-lang.org" --- > self.child.location = ARGV[0] || "http://www.ruby-lang.org" 57,58c57,58 < pixbuf = pixbuf.scale(320, 200, Gdk::Pixbuf::INTERP_HYPER) < pixbuf.save("screenshot-thumb.png","png") --- > pixbuf = pixbuf.scale(500, 400) > pixbuf.save("screenshot-thumb.#{Time.now.strftime('%Y%m%d')}.#{$$}.png","png") |
あとはこんな感じで起動。
1 | ruby moz-snapshooter.rb http://udzura.jp |
あと、なぜかサイトによってはいつまでもスクリーンショットが取れない場合があります。。。後述するwebkitなら大丈夫なのかしら。
次回予告
今回はFirefoxでのスクリーンショットを保存しました。
次回はwebkitでのスクリーンショットを撮りたい感じです。
上記サイトが参考になる……?




