jhead はデジカメなどで撮影した画像などに含まれる EXIF 情報を表示してくれるコマンド。debian 系 OS でのインストールは以下のようにする。数百キロバイト程度なのですぐ終わる。
$ sudo aptitude install jhead
使い方はとても簡単。下記のようにファイルを指定するだけだ。
$ jhead DSC01977.JPG File name : DSC01977.JPG File size : 4653056 bytes File date : 2010:10:27 10:58:31 Camera make : SONY Camera model : DSLR-A330 Date/Time : 2010:10:16 17:25:25 Resolution : 3872 x 2592 Flash used : No Focal length : 18.0mm (35mm equivalent: 27mm) Exposure time: 0.0080 s (1/125) Aperture : f/10.0 ISO equiv. : 100 Whitebalance : Auto Metering Mode: matrix Exposure : program (auto)
はてなフォトライフがなかなか残念な具合なので、ImageMagick の convert コマンドを使ってサムネイルでも吐かせ、EXIF 情報付きのギャラリーHTMLを吐かせようかと思った。しかし、便利なコトにサムネイル生成機能が jhead にも含まれていた。ものぐさなので、そのままこちらを使う。
# thumb ディレクトリに同名でサムネイルを吐く。 $ jhead -st "./thumb/&i" DSC01977.JPG
これらを踏まえ、以下のようなスクリプトを書いた。
#!/usr/bin/perl $srcdir = "./src"; $thumbdir = "./thumb"; print "Content-type:text/html\n\n"; print '<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=utf-8">'; print <<EOT; <table align="center" cellpadding="0" cellspacing="5" border="0" style="font-size:9pt; "> <tr> EOT $i = 0; foreach $file (`ls $srcdir`) { chomp($file); @d = `jhead $srcdir/$file`; $d[9] =~ s/time:/time :/gi; foreach $line (@d) { ( $key, $val ) = split(/ +: +/, $line); $dt{$key} = $val; chomp($dt{$key}); } $dt{"Focal length"} =~ s/ equivalent: (.+mm)/判換算で$1/gi; $dt{"Exposure time"} =~ s/.*\((.*)\)/$1秒/gi; unless ( -e "$thumbdir/$file" ) { `jhead -st "$thumbdir/$file" $srcdir/$file`; } print " </tr>\n <tr>\n" unless ($i%2); print <<EOT; <td> <a href="$srcdir/$file"> <img src="$thumbdir/$file" border="0" height="100%"> </a> </td> <td valign="center" style="border-bottom:1px;"> ファイル:$file ($dt{"File size"})<br> 画素数:$dt{Resolution}<br> 撮影日:$dt{"Date/Time"}<br> カメラ:$dt{"Camera make"} $dt{"Camera model"}<br> 焦点距離:$dt{"Focal length"}<br> シャッター速度:$dt{"Exposure time"} / 絞り値:$dt{"Aperture"}<br> ISO 感度:$dt{"ISO equiv."} / ホワイトバランス:$dt{"Whitebalance"}<br> </td> EOT $i++; } print " </tr>\n</table>\n"; exit;
$srcdir に画像ファイルを突っこんでおけば、サムネイルを生成して、当記事の小画像のようなギャラリーHTMLを吐く。セキュリティどころかページング機能、縦方向画像の回転など、ギャラリーに必要最低限のものすら付いてないけど気にしない。
ちなみにIS01の画面には、横スクロールせずにぴったり収まるレイアウト。
※ 2020/07/02 度重なるブログ移転・ブログシステムのアップデートにより崩れた記事を校正。