PHPで指定URLのスクリーンキャプチャを撮ろう

2017.08.02.水
PHP

お久しぶりの登場、溝畑です。

JSばかりでしたが、今回はPHPです。
個人的に「指定したURLのキャプチャを撮ることはできないの?」という相談を受けて、調べてみました。

早速やっていきましょう!

PHP PhantomJS

PHP PhantomJSというライブラリを使います。

composer前提で話を進めていきます。
composer initでcomposer.jsonを作成。

中身はこんな感じで書いておき、composer installを実行してしばらく待ちます。

実際に使ってみる

手始めに画面全体を撮ってみましょう。

適当なPHPファイルを作成して、以下のコードを記述してください。
今回はscreenshot.phpとしておきます。

書けたら、php screenshot.phpで実行します。
すると、createCaptureRequesetで指定した先のスクリーンキャプチャが保存されていることが分かります。
php-phantomjs1
え、これだけ?と思われるかもしれませんが、これだけなんです。

画面の一部がほしい

「いやいや、画面全体じゃなくて、この部分だけがほしい!」という場合もありますよね?
ということで、「KeyPoint」のロゴ部分だけを抜き出してみます。

Top、Leftが指定できるsetCaptureDimensionsを使うとできそうです。

先ほどのコードに以下を追記してください。

同じように実行してみるとどうでしょう?
php-phantomjs2 ロゴ部分を抜き出すことができました!
ただ、少し調整が面倒かもしれないですね。

最後に

もう少し面倒なものかと思っていましたが、簡単にできてびっくりしました。
「URLを貼り付けたら、その先のキャプチャを表示」だとか、そういった機能で使えるかもしれません。

このような場面に出くわした際は、是非お試しください。

参考
【PHP PhantomJS】特定URLのスクリーンキャプチャを生成する方法