Exifの必要な部分だけコピーする
写真撮影時の情報はexiftoolコマンドを使うと、余すところなくすべて確認できる。
$ exiftool R0015381.DNG
詳細に確認できることは素晴らしいこと。でも、あまりに項目数が多すぎると本来注目したい値が埋もれてしまう...。もっとシンプルに基本的な撮影情報をまず知りたい。そう、iPhotoでcommand-Iした時にウィンドウ右上に表示されるExif程度で十分なのだ。
exiftoolコマンドはすべてのExifを取得できるのだから、その中から必要な項目だけピックアップして、自分好みのフォーマットで出力するようにすれば良いはず。やってみた。
exiftoolコマンドの使い方
$ exiftool -Model R0015381.DNG|grep -E '^Camera Model Name *:'
Camera Model Name : GXR A12
- そんなことをしなくても、タグ名をオプションに指定すれば、その項目だけが出力されるのであった。
$ exiftool -Model R0015381.DNG
Camera Model Name : GXR A12
- ちなみに、タグ名は-sオプションで確認できる。(タグ名:値というフォーマットで出力される)
$ exiftool -s R0015381.DNG
...中略...
Model : GXR A12
...中略...
- さらに、欲しい値は「GXR A12」だけなので、cutやawkで取り出そうと考えていたのだが...
$ exiftool -Model R0015381.DNG|awk -F': ' '{print $2}'
GXR A12
- そんなことをしなくても、-Tオプションを指定すると値だけになってくれるのであった!
$ exiftool -T -Model R0015381.DNG
GXR A12
- さらに、タグ名のオプションを複数指定すると、タブ区切りテキストとして出力される。
$ exiftool -T -Model -LensID -ISO -FocalLength35efl -ExposureCompensation -FNumber -ShutterSpeed R0015381.DNG
GXR A12 GR Lens A12 28mm F2.5 200 18.3 mm 0 4.0 1/200
exiftoolコマンドは、痒い所に手が届く、素晴らしい使い勝手を備えていたのであった。
画像ファイルからExifをコピーする
以上のexiftoolコマンドの使い勝手の良さを利用して、画像ファイルから必要なExifをコピーするAppleScriptを作ってみた。
Finderバージョン
set the clipboard to summary_exif(unix_path()) the clipboard
on summary_exif(fpath) set fpath to quoted form of fpath
do shell script "/usr/bin/exiftool -T -Make " & fpath & "|awk '{print $1}'"
set maker to result
do shell script "exiftool -T -Model -LensID -ISO -FocalLength35efl -ExposureCompensation -FNumber -ShutterSpeed " & fpath
set {camera_model, lens_id, iso, focal_length_35, ev, f_number, shutter_speed} to split(result, tab) if maker is not in camera_model then set camera_model to maker & space & camera_model
join({camera_model, lens_id, "ISO " & iso, focal_length_35, ev & " EV", "f/" & f_number, shutter_speed}, ", ") end summary_exif
on unix_path() tell application "Finder"
set sel_list to selection
(sel_list's item 1 as alias)'s POSIX path
end tell
end unix_path
on split(sourceText, delimiter) if sourceText = "" then return {} set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to delimiter
set theList to text items of sourceText
set AppleScript's text item delimiters to oldDelimiters
return theList
end split
on join(sourceList, delimiter) set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to delimiter
set theText to sourceList as text
set AppleScript's text item delimiters to oldDelimiters
theText
end join
RICOH GXR A12, GR Lens A12 28mm F2.5, ISO 200, 18.3 mm, 0 EV, f/4.0, 1/200
- その画像