joppot

コピペで絶対動く。説明を妥協しない

プログラミング

phpのsnappyライブラリをmacで使用して、webサイトのサムネイルを取得する

投稿日:

Pocket

snappy_top_thumb

概要

みなさんこんにちはcandleです。今回はsnappyを使用して、ウェブサイトのサムネイルを自動的に取得したいとおもいます。

snappyはそれ自体がhtmlを画像にするスクリプトではなく、wkhtmltoimageというlinuxやmac、windowsでうごくCUIソフトを使っています。ゆえに、このライブラリを使うには、別にwkhtmltoimageをインストールする必要があります。

前提

composerがインストールされている。
snappyのインストールはcomposerを使用します。

apacheやmampなどphpが動く環境が整っている。

brewがインストールされている。
brew caskがインストールされている。


wkhtmltoimageをインストールする

wkhtmltoimageはwkhtmltopdfというソフトの付属で付いてくるので、それをインストールします。

brew cask install wkhtmltopdf

brew_cask_install_wk

これで準備は完了です。

phpのプロジェクトを作成する

apacheのdocument rootかmampのhtdocsとかに移動します。
私はホームディレクトリのapacheフォルダがapacheのドキュメントルートになっているのでそこで、作業をします。

フォルダを作ります。

cd apache
mkdir wkimage
cd wkimage

create_wkimage_prj

composer.jsonファイルを作成します。

touch composer.json

以下を記述します。

{
  "require": {
    "knplabs/knp-snappy" : "*"
  }
}

composer_knp_snappy

ファイルを保存して、以下のコマンドからsnappyをインストールします。

composer install

composer_install_knp_snappy

snappy 以外にも必要なライブラリがインストールされています。

snappyのプログラムを書く

index.phpを作成します。

touch index.php

以下を記述します。

<?php
use Knp\Snappy\Image;
require __DIR__ . '/vendor/autoload.php';

$url="https://www.google.co.jp";

$snappy = new Image('/usr/local/bin/wkhtmltoimage');

$snappy->setOption('width', '1024');
$snappy->setDefaultExtension('jpg');

header('Content-Type: image/jpeg');
echo $snappy->getOutput($url);

?>

最初の行はknpのimageライブラリを使用することの宣言
2行目はcomposerでインストールしたライブラリの呼び出し

$snappy = new Image(‘/usr/local/bin/wkhtmltoimage’);

この部分はwkhtmltoimageのコマンドのパスを入れます。brewで入れた場合はここですが、他の方法で入れば場合はパスが異なる可能性があります。「which wkhtmltoimage」で調べて適宜変更してください。

setOptionはwkhtmltoimageのオプションを指定できます。

headerで、画像でファイルでああることを宣言し、echo $snappy->getOutput($url);で画像を出力します。

サーバを起動して、ページにアクセスすると、$url=”https://www.google.co.jp”;で指定したgoogleの画像が表示されます。

google_image_top_page

まとめ

これをうまく使えば、webサイトの画像の取得が簡単になりますね。もちろん、著作権的なところは気をつけて下さい。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-プログラミング
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Mac OS 10.9 MarvericksにHomebrewでOpencv2.4.7をインストールする

概要 みなさんこんにちはcandleです。今回はhomebrewを使用してopencvをインストールします。 前回macports経由でインストールする方法がうまくいかない事を記事にしましたが今回の方 …

wordpressのbogoでサイトで使用する言語を「en-US」から「en」に変更する方法

English 日本語 概要 みなさんこんにちはcandleです。 今回はbogoプラグインのカスタマイズです。bogoはwordpressのサイトを簡単に他言語に対応することができる素晴らしいプラグ …

MAMPのPHPからSQLite3データベースにアクセスして値を取得する

概要 みなさんこんにちはcandleです。MAMPのSQLiteデータベースとテーブルを作成して、レコードも挿入した事なので、値を取得してみましょう。

react nativeのandroidでfailed to find Build Tools revision 23.0.1エラーが出る時の対処

概要 みなさんこんにちは、candleです。今回はreact nativeでrun-androidでbuildが失敗する時の対処です。 私の場合最新のandroid-sdkを入れたところ、以下のような …

basscss v8以降にv7以前のスタイルを追加する(自分用メモ)

概要 みなさんこんにちはcandleです。今回はbasscssのv8でかなりデフォルトのスタイルから削除されてしまったスタイルをインポートします。 v7以降からbasscssのスタイルはかなり分割され …

  • English
  • 日本語

プロフィール


ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー

スポンサードリンク

アーカイブ