デジカメの日時を合わせていて、2024年を2023年に設定してしまっていた。それに気付かないまま登山(2024年1月29日)で写真を撮ったため、日時が1年前(2023年1月29日)になってしまい、いろいろと厄介なことになった。
紆余曲折を経てExifToolというコマンドラインツールで解決できたので、頻繁に使うことはないものの、今後のために記事としてまとめてみた。
日時設定ミスによる問題点
ただ写真を見るだけなら何の問題もないのだが、大きな問題点が2件とそれに伴った問題点が1件発生した。
- Macの”写真”アプリに読み込むと、ライブラリでは一年前の位置に表示されてしまう。
- ヤマレコ(登山専用コミュニティサイト)に山行記録を登録するとき、ルートと写真を自動で同期できない。撮影日時=Exif情報の日時が必須なのだ。
- (後でわかったことだが)Exifの日時書き換え後、ファイルの作成日や変更日が書き換え実行日時になる。ヤマレコとは別に個人のホームページに登山記録を載せているが、その記録を作成するとき”写真”アプリと”TrailNote”(地形図印刷・ルート編集アプリ)を併用している。”TrailNote”で写真を撮影した位置を特定するためには、撮影日時=作成日が必須なのだ。
MacOSの”写真アプリ”が使える?
MacOSの”写真アプリ”の[日時調整]でExif情報の日時を修正できるが、ここでもいくつかの問題点が。。。
- 修正されるのは”写真”アプリ内でだけのことで、当然オリジナルの写真は修正されない。
- ”写真アプリ”から書き出すとき、[書き出す]なら問題はないが、[未編集のオリジナルを書き出す]だとExif情報の日時は修正前の日時で書き出されてしまう。そもそもがファイルを新しく書き出すため、(ファイルの)作成日と変更日が書き出し実行日時になってしまう。当たり前だね😅💦。
MacOSの”写真アプリ”で1.と2.は解決するが、やはりオリジナル写真の日時を完璧に修正したい。
Exif情報の日時とファイル作成日・変更日を撮影日時にしたい
オリジナルの写真のExif情報の日時を書き換えるしかないと、「Mac写真exif情報書き換え」で検索してみた。いろいろヒットする中、以下の記事から”ExifTool”というコマンドラインツールで解決しそうな情報を得た(感謝)。
Macで画像や動画のEXIFの日時を変更する方法 | ヒノマルクのデータ分析ブログ
写真ファイルの撮影日時を変更する – sgryjp.log.old
Mac で Exif を編集したり削除したりできる「ExifTool」 | 使える機材 Blog!
ExifToolとは
画像、動画などのメタデータの取得や追加、変更を行うためのフリーのオープンソースソフトウェアプログラムです。プラットフォームに依存せず、コマンドライン(Macではターミナル)で利用できます。
詳しいマニュアルはこちらにありますが、英語なので敷居が高いかも。。。
ExifToolをインストール
さっそくExifToolをダウンロードして、インストールした。
ダウンロードはこちらから → ExifTool by Phil Harvey
ダウンロードが完了したら、さっそくインストール。いたって簡単。
ダウンロードしたExifTool-12.76.dmgをダブルクリックし、ExifTool-12.76.pkgを右クリックで開き、インストーラの指示にしたがってインストールする(途中でユーザーパスワードの入力を要求される)。
「インストールが完了しました」が表示されればOK。
通常のアプリと違って、アプリケーションフォルダーにアプリがインストールされません。
確認するには、ターミナルにopen /usr/local/binで隠しフォルダbinが表示されるので、libとexiftoolがあればOKです。
ExifToolでExif情報の日時を修正する
ExifToolを実行する
私の場合は一日分のファイルをすべて変更するため、デジカメのフォルダーを丸ごとMacのデスクトップに保存した。
次に、前出の記事から以下のコマンドラインを作成し、ターミナルで実行した。
exiftool -AllDates+=”1:0:0 0:0:0″ -overwrite_original /Users/kazu/Desktop/100MSDCF/*.JPG
数秒でExifの日時書き換えが完了😊。
ここでコマンドラインの補足説明
▷ コマンドラインの詳細
・ exiftool :コマンド
・ -AllDates+=”1:0:0 0:0:0″ オプション :元ファイルの撮影日時(exif)を1年進める
・ -overwrite_original オプション :元のファイルに上書き
・ /Users/kazu/Desktop/100MSDCF :写真の入ったフォルダーのパス
・ /*JPG :ワイルドカード(*)で100MSDCF内のすべての写真を指定
▷ -alldatesは次の3種類の「日時」を同時に変更する
・ CreateDate :デジタルデータ作成日時(メモリーカードに書き込まれた日時)
・ ModifyDate :ファイル作成日時
・ DateTimeOriginal :オリジナルデータ作成日時(カメラのシャッターが押された日時)
▷ -alldatesと日時の間に書く記号により動作が変わる
・ = :現在の値を上書き
・ += :指定した値だけ現在から未来へ進めた日時へ変更
・ -= :指定した値だけ現在から過去に戻した日時へ変更
ファイルの作成日と変更日が現在の日時に変わる
Exif情報の日時は修正できたが、ファイルの作成日と変更日が今実行したExifの日時書き換え日時になってしった。Exif情報の日時を書き換えたファイルを作成し、上書きしているのだからこれは当然の結果だろう。
ファイルの作成日と変更日を修正するコマンドラインを作成
今度は書き換えたExifの日時を作成日と変更日に反映させるため、以下のコマンドラインを作成し、実行した。
exiftool “-FileModifyDate<EXIF:DateTimeOriginal” -overwrite_original /Users/kazu/Desktop/100MSDCF/*.JPG
これでファイルの作成日と変更日も撮影した日時に変更され、「オリジナル写真の日時を完璧に修正したい」という、当初の目的を遂げることができた。
2つのコマンドラインを1つにまとめちゃう
っで、2ステップは面倒なので、Exifの日時と作成日・変更日を一発で書き換えるため、1つのコマンドラインにしてみた。
“-FileModifyDate<EXIF:DateTimeOriginal”は上手く行かず、試行錯誤して完成したのがこれ。。。
exiftool -AllDates+=”1:0:0 0:0:0″ -FileModifyDate+=”1:0:0 0:0:0″ -overwrite_original /Users/kazu/Desktop/100MSDCF/*.JPG
まとめ・感想
ちなみに、ExifToolは多くのファイル形式に対応しているので、写真に限らず動画や画像なども変更できます。
今回は写真のExif情報の日時やファイルの作成日・変更日の修正に使ったが、例えばファイル名を撮影日時にしたり、Exif情報をすべて表示させたりといったこともできます。
使い方は多様ですが、英語のマニュアルしかないのがちょっと難点でしょうか。。。また、ターミナルを使うのも、普段 CUIに馴染がないと、やや敷居が高いかも知れません。
コメント