joppot

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

プログラミング

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

投稿日:


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

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

関連記事

javascript + Reactでhtmlタグの削除と許可とXSS対策

概要 みなさんこんにちはcandleです。今回はReactで許可したhtmlタグだけを表示し、それ以外のタグは削除するプログラムを書いてみます。 注意、本来ユーザーなどが投稿した内容をそのまま表示させ …

React webでsematic-ui-reactを使い基本的なサイトを作成する

概要 みなさんこんにちはcandleです。今回はSemantic UIを使ってReactのデザイン開発をして見たいと思います。 Semantic UIはCSSフレームワークの1つで他に有名なところはT …

Rails pluginを使ったgemの作り方[3](vendor/assets 読み込み編)

概要 みなさんこんにちはcandleです。今回はgemでvendorを作成し、それをrailsアプリケーション側で読み込ませる為の方法を紹介します。 よく、gemをインストールすると「app/asse …

ruby on railsで出力されるlog(ログ)のフォーマットを変更する

概要 みなさんこんにちはcandleです。今回はrailsのログに関する記事です。railsは決まった記述でログを出力します。 webアプリケーションを実行中におかしな挙動が合った場合はこのログをもと …

ruby on railsに最強のwysiwygエディタ、Squireを導入する

概要 みなさんこんにちはcandleです。今回はruby on railsにsquire editorを導入したいと思います。 squireはオープンソースの便利なwysiwygエディタです。 カスタ …

  • English
  • 日本語

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