プログラムでスクリーンキャプチャの取得 - Linux編
スクリーンキャプチャーを作成するツールをインストールしてテストを実施しましたので、メモとして残しておきたいと思います。
このツールは非常によく出来ていてかなり感激wしかもコマンドベースで動作してくれる為、PHPなんかでも簡単に動作してくれます!
参考にしたサイト
PHPでWEBサイトのスクリーンショットを作成するチュートリアル:phpspot開発日誌
Taking screenshots of websites in PHP
LinuxでWebサイトのキャプチャが撮れる「wkhtmltoimage」コマンドが面白かった! | Gehirn News(ゲヒルンニュース)
wkhtmltopdfという名のツール
簡単に言うと、HTMLファイルをPDFファイルとして生成してくれるツールです。
名前のwkはWebkitの事らしいですw
しかもこれ、windowsやMacにも対応しているようです。
今回はテスト的にVagrantでCentOSにセットアップしてみました。
wkhtmltopdfのインストール
まずはダウンロードします。最新版は「wkhtmltopdf」で確認してくださいね!
今回は、Linuxの64bit版を選択しました。
[root@localhost vagrant]# cd /usr/local/src [root@localhost src]# wget http://downloads.sourceforge.net/project/wkhtmltopdf/0.12.0/wkhtmltox-linux-amd64_0.12.0-03c001d.tar.xz
次に解凍なんですが、xzが解凍できない!ってエラーが・・・w
なので、yumでインストールの後に解凍を行いました。
[root@localhost src]# tar -Jxvf wkhtmltox-linux-amd64_0.12.0-03c001d.tar.xz tar (child): xz: Cannot exec: No such file or directory tar (child): Error is not recoverable: exiting now tar: Child returned status 2 tar: Error is not recoverable: exiting now [root@localhost src]# yum install xz [root@localhost src]# tar -Jxvf wkhtmltox-linux-amd64_0.12.0-03c001d.tar.xz
wkhtmltoimageのPATHを通しておきます。
[root@localhost src]# cp wkhtmltox/bin/wkhtmltoimage /usr/bin/
次に「wkhtmltoimage」を実行するためのライブラリ達をインストールしておく必要があるので、インストールを実行
[root@localhost src]# yum install -y libXrender libXext openssl openssl-devel fontconfig
以上でインストールは完了となります!
wkhtmltopdfの実行テスト
早速ですが、キャプチャを行いたいと思います。
[root@localhost src]# wkhtmltoimage http://google.com google.jpg Loading page (1/2) Rendering (2/2) Done [root@localhost src]# ll total 31216 ーrw-r--r-- 1 root root 58152 May 9 05:44 google.jpg drwxr-xr-x 5 root root 4096 Feb 7 00:53 wkhtmltox ーrw-r--r-- 1 root root 31897856 Feb 9 15:48 wkhtmltox-linux-amd64_0.12.0-03c001d.tar.xz
たったこれだけです!マジ感動w
ただし、このファイルを開いたら・・・・日本語が全て「■ ■ ■ ■」ってな感じに文字化けを・・・w
そして色々調査したところ、日本語フォントを入れておく必要があるらしいので、セットアップしてみました!
日本語フォントをインストール
さて日本語フォントを入れて文字化けを防いでいきたいと思います!
IPAフォントをインストールしたいと思います。
まずはファイルをダウンロードします。
[root@localhost src]# wget http://download.forest.impress.co.jp/pub/library/i/ipafont/10483/IPAfont00303.zip
zipを解凍する為に、「unzip」をインストールして、解凍します。
[root@localhost src]# yum install unzip [root@localhost src]# unzip IPAfont00303.zip
「IPAフォント」を「~/.fonts/」ディレクトリに移動させましょう!
無い場合は作成してください。
[root@localhost src]# mkdir ~/.fonts [root@localhost src]# mv IPAfont00303/* ~/.fonts/
これで準備は完了しました!再度実行・・・w
[root@localhost src]# wkhtmltoimage http://google.com google.jpg Loading page (1/2) Rendering (2/2) Done
ファイルを確認したところ、文字化けが解消されていました!
完璧!w
各種オプションについて
このツールには様々なオプションがついていますので、一部紹介しておきたいと思います。
切り抜き
#切り抜きの高さ設定 wkhtmltoimage --crop-h 400 #切抜きの横幅設定 wkhtmltoimage --crop-w 400 #切り抜き横軸位置 wkhtmltoimage --crop-x 0 #切り抜き縦軸位置 wkhtmltoimage --crop-y 0
画像サイズ
#横幅 wkhtmltoimage --width #高さ wkhtmltoimage --height
その他確認について
#ヘルプの表示 wkhtmltoimage -H
オプションを使えば、Javascriptを切ったり、HTTP認証が掛かったページを取得したり様々なことを行えます。
また、PHPのライブラリがあるみたいですので、それを利用していくのもいいかと思います!
使用環境
- ホストOS: Windows7 x64
- VirtualBox: 4.3.10
- Vagrant: 1.5.2
- ゲストOS: CentOS6.4 x64
- Ruby : 2.0.0-p451
- Ruby on Rails : 4.1.0
- passenger : 4.0.41
- apache : 2.2.15
- NetBeans IDE 8.0