#! /usr/bin/perl # CASIO EXILIM EX-M1 デジカメの画像の一覧表を作る。 # 作成者 喜多敏博 http://t-kita.net/ # ImageMagick の convert コマンドが必要。 # 100casio/ 等のディレクトリの中でこのスクリプトを実行すると # index.html が作成される。 # 大文字のファイル名は全て小文字に変更される。 # 縮小画像を作ったしるしとして,*.mark というファイルが作られるので, # *.mark というファイルが存在する場合は,縮小画像は作らない。 # (必要に応じて *.mark を消してください。) # このスクリプトの改変,再配布は自由に行ってください。 # 作成される一覧表のサンプルは http://t-kita.net/etc/mkpindex/ にあります。 # $origsize= "1280x960"; $ssize= "120x120"; # thumbnail としてこの大きさの画像を作成。 $msize= "640x480"; # 画面で見るのに適当な大きさとして作成。 $colnum= 4; # 一覧表の列数 # 画像の timestamp 情報を得るだけ。 $f= glob("*[0-9].jpg *[0-9].JPG"); ($sec, $min, $hour, $day, $mon, $year)= localtime((stat $f)[9]); $year+= 1900; $mon++; $title="$year年$mon月$day日 写真一覧(撮影:喜多)"; # AVI ファイルの thumbnail (*.avi.jpg) を #(末尾のような mkavithumbnail.csh で作成して)置いておけば, # それを $ssize の大きさにして一覧に表示するが, # それが無い場合は, # 以下のようなコメントをいれてやらないとどの画像か分からない。 # #@moviecomment=( #"奥テーブル風景", #"手前テーブル風景", #"記念品贈呈" #); open FH, ">index.html"; print FH "\n"; print FH "$title\n"; print FH "\n\n"; print FH "
$title
\n\n"; # ---------- jpeg files -------------- $co= 0; print FH "
\n\n"; while(<*[0-9].jpg *[0-9].JPG>){ if ( ($_=~/(.*).jpg$/) || ($_=~/(.*).JPG$/) ){ $fbase= lc($1); unless ( (-e "$fbase.mark") && (-e "$fbase.jpg")){ # system("convert $_ /tmp/mkpindex.bmp"); open PH, "convert -verbose $_ /tmp/mkpindex.bmp|"; $ginfo= ; $origsize= (split (' ',$ginfo))[1]; close PH; # system("convert -geometry $ssize /tmp/mkpindex.bmp ${fbase}s.jpg"); open PH, "convert -verbose -geometry $ssize /tmp/mkpindex.bmp ${fbase}s.jpg|"; $ginfo=; $ginfo=~/([0-9]+x[0-9]+)/; $ginfo=~/=>([0-9]+x[0-9]+)/; $ssizereal= $1; close PH; # system("convert -geometry $msize /tmp/mkpindex.bmp ${fbase}m.jpg"); open PH, "convert -verbose -geometry $msize /tmp/mkpindex.bmp ${fbase}m.jpg|"; $ginfo=; $ginfo=~/([0-9]+x[0-9]+)/; $ginfo=~/=>([0-9]+x[0-9]+)/; $msizereal= $1; close PH; rename "$_", "$fbase.jpg"; system("chmod 644 $fbase.jpg"); unlink "/tmp/mkpindex.bmp"; open MARK, ">$fbase.mark"; print MARK "$origsize\n"; print MARK "$ssizereal\n"; print MARK "$msizereal\n"; close MARK; } if (-e "$fbase.mark"){ open MARK, "<$fbase.mark"; $origsize= ; chomp $origsize; $ssizereal= ; chomp $ssizereal; $msizereal= ; chomp $msizereal; close MARK; } print FH "
\n"; ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)= stat("${fbase}m.jpg"); $KBsize= int(($size+500)/1000); print FH "\n"; ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)= stat("$fbase.jpg"); $KBsize= int(($size+500)/1000); print FH "\n"; $datestr= localtime $mtime; print FH "\n"; print FH "
\n"; $ssizew= (split(/x/,$ssizereal))[0]; $ssizeh= (split(/x/,$ssizereal))[1]; print FH "$fbase\n"; print FH "
表示用($msizereal; ${KBsize}KB)
元画像($origsize; ${KBsize}KB)
$datestr
\n\n"; $co++; if ($co==$colnum){ $co=0; print FH "
\n\n"; }else{ print FH "\n\n"; } } } print FH "
\n\n"; print FH "\n\n\n"; # ---------- avi files -------------- $co= 0; $totalco= 0; print FH "
\n\n"; while(<*[0-9].avi *[0-9].AVI>){ if ( ($_=~/(.*).avi$/) || ($_=~/(.*).AVI$/) ){ $fbase= lc($1); unless ( (-e "$fbase.mark") && (-e "$fbase.avi")){ rename "$_", "$fbase.avi"; system("chmod 644 $fbase.avi"); system("touch $fbase.mark"); } if (-e "$fbase.avi.jpg") { $thumbnail= "$fbase.avi.jpg"; system("convert $thumbnail /tmp/mkpindex.bmp"); # system("convert -geometry $ssize /tmp/mkpindex.bmp $thumbnail"); open PH, "convert -verbose -geometry $ssize /tmp/mkpindex.bmp $thumbnail |"; $ginfo=; $ginfo =~ /([0-9]+x[0-9]+)/; $ginfo =~ /=>([0-9]+x[0-9]+)/; $ssizereal= $1; close PH; $ssizew= (split(/x/,$ssizereal))[0]; $ssizeh= (split(/x/,$ssizereal))[1]; }else{ $thumbnail= "MotionJPEG.jpg"; } print FH "
\n"; if ($moviecomment[$totalco] eq ""){ print FH "\n"; }else{ print FH "\n"; } $totalco++; ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks)= stat("$fbase.avi"); $MBsize= int($size/100000); $MBsize= $MBsize/10; $time= int(30*$MBsize/3.7+0.5); print FH "\n"; $datestr= localtime $mtime; print FH "\n"; print FH "
\n"; print FH "\"MotionJPEG\"$fbase\n"; print FH "
\n動画$totalco\n
\n$moviecomment[$totalco]\n
音声付動画(約${time}秒; ${MBsize}MB)
$datestr
\n\n"; $co++; if ($co==$colnum){ $co=0; print FH "
\n\n"; }else{ print FH "\n\n"; } } } print FH "
\n\n"; print FH "mail\@t-kita.net
\n"; print FH "http://t-kita.net/\n"; print FH "\n"; close FH; # xanim と import コマンドを使って 半自動で AVI ファイルの # thumbnail 画像を作る csh スクリプト : #------------------- mkavithumbnail.csh -------------------- #foreach f (*.avi) # echo $f # xanim -Zp0 $f & # xmessage "$f ready?" # import $f.jpg # kill % #end #------------------- mkavithumbnail.csh end ------------------