外部サイトの画像URLから自前のサーバーにリサイズした画像キャッシュを作成するWordPressカスタマイズ方法

先日、外部サイトの、OGP情報を取得しキャッシュ化してみました。

外部サイトから取得したOGP情報は、大抵は文字列なので、そのままデータベースに保存してしまえば、後でいくらでも再利用できます。

ただ、OGPイメージ(og:image)は、URLの情報のみで、画像データが取得できるわけではありません。

画像データを取得せずとも、そのまま取得した相手方のog:imageのURLを、そのままIMGタグで呼び出して利用することもできるにはできます。けれど、これでは画像元(相手方)のサーバーに転送量関係の負荷をかけてしまいます。

そこで、og:imageに掲載されている画像URLから、一旦自前のサーバーにog:imageを取り込んで、それをサムネイルなどで扱いやすいリサイズした後、利用するということをやってみたいと思います。

スポンサーリンク
レクタングル(大)広告

外部サーバーから取得した画像をリサイズして保存する関数

とりあえず、外部サーバーから取得した画像を、自前のサーバーにキャッシュとして置いておく関数を作成したので掲載しておきます。

それぞれの、引数には、以下のような値を指定します。

  • $image_url:取得したい画像のURL
  • $w:リサイズ後の画像の幅]
  • $h:リサイズ後の画像の高さ
  • $crop:指定した画像サイズで切り取る

戻り値は以下になります。

  • 画像がうまく取得できてリサイズできたとき:画像のURL
  • 画像取得やリサイズに失敗したとき:NULL
関数内の保存用ディレクトリや、保存した画像のファイル名は、使用する環境によって多少アレンジを加える必要はあると思います。

関数を使用してみる

例えば、以下の画像を外部サイトから取得して100×100pxの切り抜き形式で、リサイズするとします。

Simplicity

そうする時は、先程の関数を以下のように使用します。

処理後は、自前のサーバーに以下のような画像が保存され、画像キャシュとして利用できます。

リサイズ後の画像

関数の、利用例はこんな感じです。

こういった、外部画像のキャッシュ化は、やり方はそれぞれなので、お使いの環境に合わせて、処理などを要請していただく必要はあるかもしれません。

まとめ

こんな感じで、外部サイトのOGP情報を元に、そのページのアイキャッチとなるサムネイルを作成してみました。

og:imageタグで公開されているものなので、基本的に拡散用に利用して良いものと思います。実際に、Facebookなんかもその画像を利用しています。

ただ、画像が相手のサーバーにあるものを、そのまま呼び出してしまうと、転送量的な面で迷惑をかけてしまうかもしれません。

そういった意味で「外部サイトのog:imageを利用したいけど、相手に負荷をかけたくない」なんて場合は、今回の方法は良いかと思います。

OGPイメージにかかわらず、その他にいろいろな場面で利用できるのではないかと思います。