CakePHP と asido を使った任意の画像を url の変更だけで任意のサイズで書き出す web アプリ
php の画像処理ライブラリのasidoが便利そうだったのでひどい web アプリを作ってみた。
url でサイズと画像を指定したら、そのサイズでその画像を出力するアプリ。
まず、元画像 500x334
これを、以下のような url でアクセスした時の画像
動作の説明がめんどいので、さらっと。
- 元画像は ドキュメントルートからの絶対パス指定でも、http:// から始まる絶対パスでもok
- url で指定されたサイズにリサイズする
- 縦横比が異なる場合は、リサイズした上で画像の中心から指定サイズ分トリミングする
- 元画像より大きいサイズを指定した場合は無視される
- 本来は一度生成した画像はこの辺に書き出される→ http://pm11op.xii.jp/pm11op/anysizenizer/img/thumbs/test/100x100/
- けど、借りてるサーバに得体の知れない画像が生成されるのは嫌なので、表示直後に unlink する富豪っぷり。
- 中身は CakePHP と asido で動いてますよと。
一番下からダウンロードできますが、
実際に使用した際に発生したいかなる不利益も自己責任で処理してください。
ちょっと考えただけでも以下の問題点・改善すべき点があります。
- 富豪過ぎるので、画像もDBに格納して管理する −扱いがめんどうなLOB(ラージオブジェクト)は使わない方法も含めを参考に mod_rewrite でキャッシュぽくしたら、案外使えると思う
- とはいえ、ループで大きい画像を 1x1 〜 5000x5000 とかされたらひどい目に合うと思うので、指定サイズ以外は無視するとかの処理はすべきだと思う。