home>>PHP FW Kohanaを使う>>アプリケーションを作る

アプリケーションを作る

画像の取り扱い

Blogの利用はなんとかなったので、基本要件のさいごのところで書いた写真アルバムの利用について考えはじめた。最初は、アップロードや整理用にアルバムアプリケーションを別途置いてそれを閲覧しながら、表示したい画像のURLを頁の方で指定する、という風に考えていた。頁設定覚えの2009年6月にもその準備の残滓がある。

でも、企画倒れになりそうなので、やめた。ぼくの場合、アルバムに接続するためにブラウザを立ち上げること自体、面倒になるに決まっている。dbの面倒を見るのもホントはいやなので。

必要な機能は、(1)特定のフォルダ(ディレクトリ)に画像ファイルをおいて、(2)サムネールといくつかのピクセル幅をもった同一画像をを生成(加工)し、(3)サムネールをリスト化して表示しURLを確認したい、というだけだから、Kohanaモジュール内に作ってみることにした。

画像ファイル名リストの取得にあたっては、Kohanaのcoreクラスにlist_filesメソッドというのがあるので、それを使えばいい。

ファイルリストの取得

Kohana::list_files(ディレクトリ名,
                   再帰的に取得するかどうかのフラグ,
                  ディレクトリパス);
三番目の引数が省略されると、systemディレクトリのリストが得られる。

画像加工は、KohanaではGDをサポートする画像ライブラリが標準添付されているのでそれを使えばいい。

画像の加工と保存

$image = new Image(画像フルパス);
$image->resize(幅px,高px,Image::WIDTH);<==WIDTHなら幅が優先。
                                             HEIGHTなら高さ優先。など
$image->save(書き込みファイル名フルパス,0666);

画像用ディレクトリ以下にファイル、あるいはサブディレクトリをおいて、画像処理用のURLにアクセスするとKohana::list_filesで得た情報をループで回して、まだ存在しないサムネール画像、幅を決めた縮小画像があれば、処理をしてImageクラスでsaveするようにしておく。

あとは、それらをもとに、画像のサムネールリストを表示して、さらにサムネールリストをクリックすれば、個別の画像表示リンクが出るようなVIEWを書けばいい。

手抜きだけど[1]、これでぼくには十分である。

album_url.png album_list.png

下は/img/p0216/no_name_folder/_resize_200/PC240204.JPGという名前で生成された鶏の丸焼き画像(クリックすると、480px幅の画像表示)。

PC240204.JPG



/img/p0216/no_name_folder/_resize_480/PC240204.JPGならば

PC240204.JPG



となる(クリックすると、800px幅の画像表示)。
















annex

補足情報はありません













note
[1] 処理に時間がかかるとPHPのmax execute time(デフォルト30秒)にひっかかって エラーが出るが、再度実行させればいつか全部処理できるだろう、という「仕様」