2020年1月22日水曜日

exiftoolの使い方

私の写真の整理方法

  1. ファイル名は撮影日に変更します。例:20200122_100000.jpg
  2. 写真のランクを埋め込みます。高いランクの写真は、googleフォトにアップしていつでも見られるようにします。
  3. googleフォトは、撮影日で並び替えられるので、撮影日の無い写真ファイルに撮影日を埋め込みます。撮影日が無い写真とは、スキャンした写真他です。
  4. googleフォトの情報欄に写真の説明が表示されるよう、タグを埋め込みます。

exifについて

  • 埋め込む文字コードを、UTF-8に統一します。これが重要です。
  • 画像ビューワーは、以前は、XnViewを使い、IPTCデータ編集機能を使っていましたが、SHIFT-JISで埋め込まれるため、googleフォトで文字化けしました。
  • また、UTF-8で埋め込んだ日本語タグは、XnViewで文字化けします。
  • そのため、ビューワーは、XnView MPに変更しました。XnView MPは、タグ検索が出来るので便利です。

exiftoolについて

  • タグ埋め込みに、exiftoolを使います。機能が多く、コマンドラインで大量の写真を一括編集できて効率がとても良いからです。
  • exiftoolを使うにあたって、pathを通しておきます。(環境変数のpathに設定)
  • フォルダ名やファイル名に日本語がある場合、正常動作しないので、日本語を含むフォルダ名がある場合は、先にカレントフォルダに変更します。ファイル名は、私の場合、撮影日時にしているため日本語はありません。

exiftoolのコマンド例

Exifの日付埋め込み

例として、"T:\遊馬2のアルバム\Target.jpg"の撮影日付を、1980/01/22 12:00:00に変更します。
T:
cd "T:\遊馬2のアルバム\"
exiftool -overwrite_original -AllDates="1980:01:22 12:00:00"  Target.jpg
  • -overwrite_originalは、ファイルを上書きします。
  • -AllDatesは、下記の3つのタグに同じ日時を埋め込みます。
    ・Date/Time Original
    ・Create Date
    ・Modify Date
  • 日時は、コロンで区切ることに注意。

ランクの埋め込み

写真の評価(ランク)を5段階で埋め込みます。
exiftool -overwrite_original -Rating=5 Target.jpg
  • Rateingの数値は、1から5とします。
  • XnView MPを使って任意の評価の画像ファイルを選択出来ます。

写真の説明文の埋め込み

  • Googleフォトの説明の優先順位は、実験の結果下記の通りでした。
    ・第一に、xmp:Caption
    ・第二に、IPTC:Caption-Abstract
  • xmp:Captionと、IPTC:Caption-Abstractは、UTF-8でないと文字化けします。
  • exiftool はコマンドラインで日本語が使えません。
    悪い例 exiftool -overwrite_original -IPTC:Caption-Abstract="テスト"  Target.jpg
  • そのため、変更するファイル名にタグ名と内容を記述したUTF-8のcsvファイルを先に作ってそれを元に一括で埋め込む方法をとります。私は、説明文だけでなくキーワードや撮影者のデータも埋め込めるEXCELシートを作り、マクロで、UTF-8のcsvファイルの書き出しとタグ埋め込みのバッチファイルを実行して複数のファイルを一括処理しています。
SourceFile,IPTC:Caption-Abstract,Copyright,IPTC:Keywords,IPTC:By-line,IPTC:CopyrightNotice,ImageDescription,XPTitle,XPKeywords,Rights,Subject,Title,Description
20200122_094251.JPG,和歌山城,遊馬2,風景,遊馬2,遊馬2,和歌山城,和歌山城,風景,遊馬2,風景,和歌山城,和歌山城
20200122_115815.JPG,和歌山城、伏虎像,遊馬2,友人;観光,遊馬2,遊馬2,和歌山城、伏虎像,和歌山城、伏虎像,友人;観光,遊馬2,友人;観光,和歌山城、伏虎像,和歌山城、伏虎像
20200122_120126.JPG,和歌山城、伏虎像,遊馬2,友人;観光,遊馬2,遊馬2,和歌山城、伏虎像,和歌山城、伏虎像,友人;観光,遊馬2,友人;観光,和歌山城、伏虎像,和歌山城、伏虎像
  • keywordは、セミコロンで区切ります。
  • 説明の中にカンマを使ってはいけません。使うとcsvファイルの区切りがずれてしまいます。
  • このcsvは、UTF-8で保存します。
  • ファイル名を、tag.csv とし、下記のバッチファイルで内容を埋め込みます。
T:
CD "T:\遊馬2のアルバム\2020\202001\20200122\"
exiftool -F -sep ";" -overwrite_original -csv="tag.csv" -codedcharacterset=utf8 -charset iptc=latin2 .
  • このバッチファイルは、SHIFT-JISで保存しています。
  • -sep で、keywordの区切り文字を指定します。
  • -F は、下記のような埋め込み時の質問に自動で応答するオプションみたいです。
    Error: [minor] MakerNotes offsets may be incorrect (fix or ignore?)

cmdでのexifの表示

CHCP 65001
cd "T:\遊馬2のアルバム\"
exiftool Target.jpg
  • UTF-8で埋め込んでいるので、cmdをUTF-8に変更しないと文字化けします。

指定したタグのみファイルへ出力

CD "T:\遊馬2のアルバム\"
exiftool -csv -IPTC:Keywords -IPTC:Caption-Abstract -charset iptc=latin2 -r -ext jpg . > out.csv
  • -r は、サブフォルダのファイルも対象とします。
  • -ext は、指定した拡張子のファイルのみを対象とします。今回は、jpgのみ。
  • EXCELでは、UTF-8で out.csv を開かないと文字化けします。

キーワードの追加埋め込み

exiftool -IPTC:Keywords+="Album" -EXIF:XPKeywords+="Album" -Subject+="Album" Target.jpg
  • コマンドで直接実行するときは、日本語が使えません。
  • タグ名の後に + で追加出来ます。
  • EXIF:XPKeywordsはエラーで追加されません。リスト形式ではなく、文字列であることが理由のようです。

タグの全コピー

exiftool -overwrite_original -tagsFromFile Source.jpg -codedcharacterset=utf8 Target.jpg
  • Source.jpgに埋め込まれているタグを全て、Target.jpgにコピーします。
  • -codedcharacterset=utf8 を付けないとIPTCが文字化けします。

エラーの対処法

  • タグ埋め込みで下記のエラーが表示されることがありました。
    Warning [minor] Fixed incorrect URI for xmlns:MicrosoftPhoto
  • この場合、XMPタグを削除します。
exiftool -XMP= Target.jpg
  • タグ名の=に何も付けないとそのタグが削除されます。