PHPからWebAPI(screendot)経由で他サイトのスクリーンショットを取得する方法
PHPで他サイトのスクリーンショットを取得したい。今回はライブラリは無しで実現したかったため方法を調べたところscreendotというWebAPI経由で対応できる模様。以下に実装方法をメモ。
目次
screendot
公式サイト
ドキュメント
アカウント作成及び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で画像を比較して類似度を算出する「image-comparator」ライブラリの利用方法
PHPで画像の類似度を計測したい。ただ、そのためのロジックが全く分からないためラ ...
-
-
PHPで画像を分割し並べ替えて出力したものをJavaScriptで復元する方法
ある電子書籍サイトをブラウザの開発者ツールで見てみたところ、PHPでページ画像を ...
-
-
PHPでjpg / png画像をWebP画像に変換し保存する方法
PHPでjpg / png画像を圧縮したかった。ただjpg / pngのままだと ...
-
-
smart_resize_imageで縦横の比率関係なく、固定リサイズ
PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズで使ったs ...
-
-
CodeIgniter4でフォームからファイルをアップロードし保存する方法
CodeIgniter4.4.4でformから画像等のファイルをアップロードし、 ...
