写真の撮影日時(exif)と作成日を変更する

デジカメの日時を合わせていて、2024年を2023年に設定してしまっていた。それに気付かないまま登山(2024年1月29日)で写真を撮ったため、日時が1年前(2023年1月29日)になってしまい、いろいろと厄介なことになった。

ファイルの作成日と変更日
Exif情報の日時

紆余曲折を経てExifToolというコマンドラインツールで解決できたので、頻繁に使うことはないものの、今後のために記事としてまとめてみた。

日時設定ミスによる問題点

ただ写真を見るだけなら何の問題もないのだが、大きな問題点が2件とそれに伴った問題点が1件発生した。

  1. Macの”写真”アプリに読み込むと、ライブラリでは一年前の位置に表示されてしまう。
  2. ヤマレコ(登山専用コミュニティサイト)に山行記録を登録するとき、ルートと写真を自動で同期できない。撮影日時=Exif情報の日時が必須なのだ。
  3. (後でわかったことだが)Exifの日時書き換え後、ファイルの作成日や変更日が書き換え実行日時になる。ヤマレコとは別に個人のホームページに登山記録を載せているが、その記録を作成するとき”写真”アプリと”TrailNote”(地形図印刷・ルート編集アプリ)を併用している。”TrailNote”で写真を撮影した位置を特定するためには、撮影日時=作成日が必須なのだ。

MacOSの”写真アプリ”が使える?

MacOSの”写真アプリ”の[日時調整]でExif情報の日時を修正できるが、ここでもいくつかの問題点が。。。

  1. 修正されるのは”写真”アプリ内でだけのことで、当然オリジナルの写真は修正されない。
  2. ”写真アプリ”から書き出すとき、[書き出す]なら問題はないが、[未編集のオリジナルを書き出す]だと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です。

ターミナルで実行
隠しフォルダーbin

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情報の日時はバッチリ👍

ファイルの作成日と変更日を修正するコマンドラインを作成

今度は書き換えた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に馴染がないと、やや敷居が高いかも知れません。

コメント