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

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

関連記事

railsのaws-sdk gemを使ってs3のファイルを削除する

by martinak15 概要 みなさんこんにちはcandleです。今回はs3にアップロードされている画像ファイルをrailsのaws-sdk gemを使用して削除してみたいと思います。 記事中で開 …

scikit-learnの4つの関数で機械学習などのデータを前処理する

概要 皆んさんこんにちはcandleです。今回はpythonの機械学習ライブラリ『scikit-learn』を使い、データの前処理をしてみます。 scikit-learnでは変換器と呼ばれるものを使い …

Mysqlテーブルの照合順序を変更する

概要 みなさんこんにちはcandleです。今回はテーブルの照合順序を変更する方法を行います。 この方法はやっても、mysqlクエリー1行ですみます。早速やりましょう。 テーブルの照合順序を変更する 次 …

ruby on railsのgemのインストールで不要なファイルをインストールしない設定

概要 みなさんこんにちはcandleです。私の記事はどうしても先人のプログラマーがまとめた内容を追試しているような感じになっていますが、これも重要なことなので、忘れないためにもまとめておきます。 ru …

react0.14 + gulp + express + babelでReactのチュートリアル環境構築をする

概要 みなさんこんにちはcandleです。今回は、react0.14のnodeの環境構築をします。 react0.14はまだまだ、開発段階にあり、しばしば仕様変更が行われています。 0.13の時では使 …

  • English
  • 日本語

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