概要
いつも写真を大量に撮るのはいいけど、親戚や友人に配布するのが思ったより大変です。USBメモリだったりメール添付だったり、データを渡す手段もバラバラになりがちです。それならやっぱりネット上で各自で確認してもらって、それぞれ気に入った写真をダウンロードするのが効率的かと思います。最近のレンタルサーバーは容量が100Gとか200Gとか平気でありますので容量的には十分ですよね。
しかし、フリーのPHP写真ギャラリーを探してみましたが、機能が複雑で思ったように写真の配布に向いているような単純なものが見つかりませんでした。また写真のwebサービスであるFlickerを使うことも考えられますが、ちゃんとダウンロードできないことが結構ありますし、写真の元データをダウンロードする操作も面倒なので、ちょっと配布に使うのは難しいかなと思ったので、PHPで写真を一覧表示するプログラムを作りました。
とはいえ、このスマートフォトギャラリーはそんなにたいした内容ではなく、実は仕組みはすごく簡単です。ディレクトリに適当に写真データをぶちこめば、それを読み込んで勝手に一覧表示するだけのPHPです。ディレクトリに階層構造があってもokです。(だたし、文字化け防止のためディレクトリ名は半角英数を使用してください)
写真データは自動で縮小されてサムネイルを生成します。このサムネイルはキャッシュされますので、一度生成するとそれを使い回すため表示スピードはそこそこ速いと思います。また写真をクリックすると拡大する機能も追加しました。こちらもキャッシュされます。
ディレクトリ構造
data / :写真データはここに入れて下さい img /
lib /
├─ highslide /:写真拡大に使用 → Highslide JS
├─ resize /:サムネイルの縮小に使用 → Smart Image Resizer
│ ├─ imagecache [707] /:パーミッションを707に設定 │ └─ image.php
└─ jquery-1.7.2.js
base.css:スタイルシート
down.php:ファイルダウンロード用php
index.php:本体
reset.css:スタイルシート(リセット)
写真のデータはFTPソフトなどを使って「data」ディレクトリ内に入れて下さい。パーミッションは特に「lib/imagecache」を書き込みできるように[707]に設定して下さい。
ファイル
photo.zip(215KB)スマートフォトギャラリー サンプル
使い方
設定
<?php
/* 初期設定
---------------------------------------*/
$photo_dir = "data"; // 写真データディレクトリ名
$site_title = "Smart Photo Gallery"; // サイト名
$site_keywords = "写真,ギャラリー,ダウンロード"; // キーワード
$site_description = "写真を一覧表示してダウンロードできる写真ギャラリーシステム"; // 説明文
$thumb_width = 105; // サムネイル幅(px)
$thumb_height = 70; // サムネイル高さ(px)
$ex_width = 600; // 拡大表示幅(px)
$ex_height = 400; // 拡大表示高さ(px)
$dir_url_separate = "-_-";
?>
$photo_dir:写真データを格納するディレクトリ名を設定します。初期状態であれば「data」になります。
$site_title,$site_keywords,$site_description:それぞれhtmlに表示されるタイトル、キーワード、説明文です。
$thumb_width,$thumb_height:サムネイルの大きさを設定します。
$ex_width,$ex_height:写真を拡大したときの大きさを設定します。
表示例
このように「data」ディレクトリに入れた写真データが全て表示されます。サンプルでは写真を入れたディレクトリが並んでいます。
サムネイルは設定した大きさで一覧表示されます。サムネイルをクリックすると写真が拡大されます。ファイル名をクリックすると写真データがダウンロードされます。
サムネイルをクリックすると拡大写真が表示されます。これもキャッシュされますので、表示速度の低下は最低限に抑えられると思います。また設定で拡大表示の設定ができますが、これは強制ではなく表示されている画面の大きさに合わせて表示されます。
今後の予定
今後は以下の機能を検討中です。
・例えば親戚・友人A・友人Bなど、パスワードを設けて公開するディレクトリをそれぞれ選べるようにする。
・複数の写真を一括でダウンロードできるようにする。
・埋め込みなどで写真をカルーセル表示できるようにする。
・撮影機種・F値・絞り・ISOなどExif情報を追加して、表示・非表示を瞬時に切り替えられるようにする。
など
しかしあまり凝ると無駄に多機能になってしまうのが悩みどころです。使いやすいですしシンプルさを維持するのも一つの方法ですね。多機能版に分けて少額で有料にするのもありかな。