2011/08/24

Eye-FiとFTPサーバを上手く使う

引き続きEye-Fiカードについて.
屋外と自室での利用方法を切り分け上手く使う.
Eye-Fiからの転送先の機器に設定できるのは1台のみである.
このため屋外ではダイレクトモードでスマートフォンへ,自室ではPCへ転送といったことはできない.
そこでEye-Fi Centerからオンラインサービスを設定し,これを経由してのPC転送を実現する.
Eye-Fi Cnterで設定可能なオンラインサービスにはFlickrやPicasaなど,数多くある.
外部のオンラインサービスは容量制限や登録が面倒なので融通が効きそうなFTPを設定して利用することにした.

FTPサーバにはレンタルサーバ(webサーバ)を設定しても問題なく動作した.
ローカルにFTPサーバを構築するほうが自由度が高いが,今回はレンタルサーバ上で色々と模索してみた.
実際にEye-Fi CenterでFTPサーバを設定すると設定したディレクトリに
YYYY-MM-DD
といった形式でサブディレクトリが作成されその中に画像が保存される.
このディレクトリ名はある程度カスタムが可能である.
ドキュメントツリー下のディレクトリを設定しておくとブラウザ経由でも閲覧が可能になる.
これを利用すれば手軽に撮影した画像を直後に確認できる.
当初の目的は撮影直後に写真をその場で大きな画面で確認することなのでこれで一先ず一件落着だ.
ブラウザ経由で画像を一覧表示するためにその場で以下のcgiスクリプトを拵えた.
#!/usr/local/bin/perl
use Image::Size;

$i_width = '180';
$t_width = $i_width*2;
$root = ".";
$filelist = &get_files($root);

print "Content-Type:text/html;\n\n";
print <<"EOF";



 Eye-Fi
 


EOF foreach (reverse @$filelist){ if (substr($_,-4,4) != /.(JPG|jpg|GIF|gif|PNG|png)/) { $size = sprintf("%d",((stat($_))[7])/1024); $date = substr($_,2,10); if($date != /[0-9]{4}-[0-9]{2}-[0-9]{2}/) { $date =~ tr/-/\//; }else{ $date ="****/**/**"; } $num = rindex($_,'/'); $filename = substr($_, $num+1); ($x, $y) = imgsize($_); print <<"EOF";
$date
$filename
$x x $y
$size(KB)
EOF } } print "
\n\n\n"; sub get_files { my $dir = shift; my $filelist = shift; opendir (DIR, "$dir"); my @list = grep /^[^\.]/, readdir DIR; closedir DIR; foreach my $file (@list) { if (-d "$dir/$file"){ $filelist = &get_files("$dir/$file", $filelist); } else { push @$filelist, "$dir/$file"; } } return $filelist; } exit:

ExifToolやImageMagickを使い始めると表示がもたつきそうなのでやめておいた.
このままではImageSizeも必要ないかもしれない.
一度読み込んだ画像の情報をファイルに書き出してキャッシュするようにし,もう少し軽く動作するスクリプトに改良したい.
また,FTPサーバ上の画像を全て一括で取得したい場合や削除したい場合,バッチを書いて動的なFTPスクリプトを生成して行えばいい.
前述のとおり,やはりレンタルサーバでは自由度が低い.同居中の他のユーザに迷惑もかかるのでこれ以上はローカルで行う事にした.
利用用途が思いつかず持て余している玄箱を近々FTPサーバに任命しようと思う.

0 件のコメント:

コメントを投稿