投稿日検索
2024年11月
 123
45678910
11121314151617
18192021222324
252627282930  

カテゴリー検索

【お知らせ】
●2013年1月以降の投稿をRetinaディスプレイに対応

最新のコメント
  1. はじめまして.現在,こちらの車両群を管理している団体の者です. 2004年時点…

,

シェルスクリプトで画像処理(5)exiftool編

exiftoolを導入しました

公式サイトはこちら
ExifTool by Phil Harvey

OSXのインストールパッケージなので導入は楽です
コマンドライン上で

exiftool file.jpg

と入力すると嫌がらせのように大量の情報が吐き出されます
標準出力(ターミナルの画面上だけ)だと使いづらいので

exiftool file.jpg > out.txt

のように使った方が良いでしょう

目的のexif情報だけ取得したい場合は

exiftool -Model file.jpg

(カメラの機種名)

exiftool -Lens file.jpg

(レンズの機種名)
などのように記述しますが、問題はexif情報の名称(タグ)がかなりフリーダムなところで、exifを生成したアプリでかなり違いが出てきます

例えばレンズ名を取得する場合、あるアプリでは上記で良いものの、別のアプリだと

exiftool -LensID file.jpg

でないと正しく取得できなかったり、場合によってはexif自体消されてしまっているわけです

撮影情報を取得するための正確なexif名を知りたい時は

exiftool -s file.jpg

で一覧が見られます

webに上げ続けた画像の中には少なからずというより、大半が不完全なexif(特にレンズ名)になっていました…
正確な撮影情報を取得するためにはもう一度オリジナルを現像して…なんてやってられません! そうだ!閃めいた!!!

画像ファイル名だけ参照して

exifはオリジナルからぶっこ抜く

理屈としては、アップした画像ファイルのフォルダを参照して、ループ文で回します

for file in *.jpg

こんな感じ

次にオリジナルファイルのあるフォルダを参照して、同名のNEFファイルなりからexifをぶっこ抜けば良いわけです

filen="${file%.*}"

拡張子.jpgを削除して

exiftool -LensID "${PASS}/${filen}".NEF

同名のNEFファイルからレンズ名取得
※変数PASSで事前にNEFファイルのあるフォルダパスを取得しておきます

さらに取得したexif情報をまとめてsedコマンドで、すで存在するhtml文の同名のjpegファイル名を記述した行の次に挿入するといったことも簡単にできます…というかやりました(o^-^o)


過去(軍曹以前)のアーカイブは全部で180ページくらいあるのですが、全てフォルダ別に管理しているので、まずfor文でフォルダを順次見て行き、フィルダ内をさらにループ文で回してjpegファイルを見て行き…という手順です

こちらは全てコンデジ画像なのでNEFを参照するまでもなく、ISO/焦点距離/SS/f値を直接jpeg画像から抜き出してhtml文を書き換えるというものでした
大体30分くらいで全て完了! 修正されたhtml文のアップの方が面倒だったとうオチですw
欠点としてはexiftoolちょっと重いです…シェルの処理の大半の待ち時間はここ


NEFファイルを参照したものは現アーカイブの方です
オリジナルのhtml文とNEFのフォルダを指定して処理しました
http://psychic-wave.com/
こちらはNEFフォルダの所在の問題から完全自動化は諦めて(ページ数は少ないし)ページごとの自動処理です

このブログに統合しました

— 追記(7/29)
EXIF情報取得をJPEG画像に限りexiftoolからImageMagickへ移行しました
こちらの方が倍以上速いです…
残念ながらNEFファイル等には対応していないので、exiftoolとの共存になります

欠点はApertureの値が(f/)xx.xの形ではなく、y/zという整数比のままで出てくるので、取得した「文字列」をバラして小数計算する手間があることくらいでしょうか
例えばこんな感じですね

apertureTmp=`identify -format "%[EXIF:FNumber]" file.jpg`
a=${apertureTmp%/*} ; b=${apertureTmp#*/}
aperture=`echo "scale = 1 ; $a / $b" | bc`

一覧表示のコマンドはこうです

identify -verbose file.jpg

Aperture以外は、むしろ要らんスペースまで吐き出されるexiftoolの方が面倒です


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)