PHPで画像の縮小+キャッシュ
いつもはphpThumbというのを使っていて、これは十分に強力で便利なんですけど重厚すぎる感じがするのでライトな感じのものをいろいろ組み合わせて作ってみました。
やりたいこと
- 縮小画像をPHPで自動生成したい
- 毎回自動生成するのは嫌だからキャッシュしたい
手順
便利なライブラリを入手
Gen-X-Design | Ian Selby » PHP Thumbnailer Class v2.0
これは画像縮小用のライブラリ。ファイルを1つインクルードするだけで使える。しかもサンプルコードが超簡単。
ファイルの配置+ファイル作成
PHP Thumbnailerをダウンロードしたら下図のように配置します。.htaccessとcacheフォルダも作ります。cacheは書き込み可能にしておいてください。これらはPHP THumbnailerにキャッシュ機能を追加するために使います。

使ってみます。
./img/csnagoya.jpgってファイルを400x300に縮小して表示したいと仮定して、こんな感じでHTMLを書きます。(cacheにはこんなファイルはありませんが気にしなくて大丈夫です)
index.html
HTML:
-
<img src="./img/thumb/cache/400x300_csnagoya.jpg" alt="" />
.htaccess
CODE:
-
<ifmodule mod_rewrite.c>
-
RewriteEngine on
-
RewriteCond %{REQUEST_FILENAME} ^.*$
-
RewriteCond %{REQUEST_FILENAME} !-f
-
RewriteRule ^.*/([0-9]+)x([0-9]+)_(.*)(jpg|gif|pnd)$ /img/thumb/show_image.php?width=$1&height=$2&filename=../img/$3$4 [R]
-
</ifmodule>
.htaccessをこんな感じにします。んで、次が最後です
show_image.php
PHP:
以上で終わりです。これで一回目のアクセスのときにcache以下に400x300_csnagoya.jpgというファイルが作られて、二回目以降のアクセスにはキャッシュを読みに行くという構成になりました。phpThumbではキャッシュを読むときもphpを読み込む必要があったりしますが、この方法ならphpを読み込まずしてキャッシュを表示できるので高速です。
注意
- ファイル数が多いときには注意(cache内をディレクトリで分けたり)
- cacheが勝手に消えない