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

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

関連記事

MAMPのSQLiteManagerを使用してsqlite3のテーブルの作成とフィールドの設定、レーコードの挿入を試す

概要 みなさんこんにちはcandleです。前回と引き続き、SQLiteManagerを使用してsqlite3を試してみましょう。 はじめに、書いておきますが、MAMPのSQLiteManagerはSQ …

ruby on railsのckeditor gemをapacheのproductionの本番環境で動かす

概要 みなさんこんにちはcandleです。今回はckeditorを本番環境で動かしてみたいと思います。 とは言っても基本的な記述はdevelopment環境と同じなので、そこまでは前回の記事を参照お願 …

wordpressのコメントフォームを編集し、名前とメールのデフォルト値を設定する

概要 みなさんこんにちはcandleです。今回はwordpressのコメントフォームをオーバーライドしてフォームの「名前」「メールアドレス」「url」のデフォルトバリューを設定したいと思います。 コメ …

railsのcoffee scriptをurl判定をして実行をする方法

概要 みなさんこんにちはcandleです。 今回はcoffeescriptを任意のURLで実行する様にする関数を作ります。 というのはrailsは最終的にassetspiplineでjavascrip …

入門ReactでGSAPアニメーションの使い方

概要 みなさんこんにちはcandleです。今回はReactでGSAPを使ってみたいと思います。 簡単にアニメーションが使えるjsライブラリはjQueryが有名です。ただ、jQueryとReactは相性 …

  • English
  • 日本語

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