勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPからWebAPI(screendot)経由で他サイトのスクリーンショットを取得する方法

  PHP

PHPで他サイトのスクリーンショットを取得したい。今回はライブラリは無しで実現したかったため方法を調べたところscreendotというWebAPI経由で対応できる模様。以下に実装方法をメモ。

 

screendot

公式サイト

https://screendot.io/

ドキュメント

https://docs.screendot.io/

アカウント作成及びAPIトークン発行

公式サイトにてアカウント作成の上でログインし、APIトークン発行ページに進む。

Nameを入力して「CREATE」をクリックするとトークンが発行されるのでメモっておく。

 

実装方法

ソースコード

<?php
$url = 'https://taitan916.info/blog/';
$token = '【APIトークン】';

$opts = [
    "http" => [
        "method" => "GET",
        "header" => "Authorization: Bearer {$token}"
    ]
];

$context = stream_context_create($opts);

$screenshot = file_get_contents("https://screendot.io/api/standard?url={$url}&format=jpg&browserWidth=1920&width=480&height=480&refresh=true&delay=0", false, $context);

$file = './test.jpg';
file_put_contents($file, $screenshot);

実行結果

上記ソースコードを実行すると以下画像が保存される筈。

パラメータに関して

width等のパラメータに関してはこちらのページを参照。

注意点

1000枚 / 月までは無料。それを超える場合は料金がかかる点に注意。

また、WebAPI経由のため、どうしても実行速度は遅くなる。一度スクリーンショットを取得したサイトに関しては画像を保存しておく等の対応を取った方が良さそう。

 

所感

無料枠の場合は上限があるのと実行速度が遅くなるというデメリットはあるものの、非常に簡単に実装できるのはありがたい。

尚、今回はWebAPI経由で対応したが、その他の方法だと「phantomJS」というライブラリを使うのが主流っぽい。こちらの方法もその内試してみたいところ。

 - PHP

  関連記事

PHPでダミー画像(プレースホルダー画像)を表示する「PHP-Dummy-Image-Generator」の利用方法

先日JavaScriptでダミー画像(プレースホルダー画像)を表示する「Hold ...

PHPで画像を分割し並べ替えて出力したものをJavaScriptで復元する方法

ある電子書籍サイトをブラウザの開発者ツールで見てみたところ、PHPでページ画像を ...

フォームからアップロードした画像にPHPでロゴ画像(透かし)を追加する方法

フォームから送られてきた画像に対してサイトロゴみたいなロゴ画像を右下等、指定の位 ...

formのinput="file"でディレクトリを選択させ、ディレクトリ内のファイルを全てアップロードする方法

フォームで複数のファイルをアップロードしたい場合、input="file"を複数 ...

PHPにて指定した画像に対して、繰り返し透かし画像処理する方法

画像素材等のサイトで無料版の画像に対して「sample」等の透かし画像処理を行っ ...