昨日の夜、大きな問題にぶつかりました。
古いデジタルカメラを取り出し、現在の日付と時刻を設定せずに使い始めました。
クリックされたすべての写真の日付は2009年1月1日です。
複数の画像の日付と時刻(およびその他のEXIF画像のメタデータ)を変更したい。
シングルクリック/ゴーで複数の画像を処理できるソフトウェアをお勧めします。
すでにGUIソリューションがあるので、コマンドラインでEXIFデータを変更する方法はいくつかあると思います。 2つの便利なツールはexiftool
とjhead
です。これらはこのコマンドでインストールできます。
Sudo apt-get install libimage-exiftool-Perl jhead
これらのツールの両方を使用すると、複数のファイルを一度に操作できますが、exifデータの操作を開始する前にファイルをバックアップすることをお勧めします。
jhead
多くのファイルの時刻と日付のEXIFデータを「シングルクリック」で変更するには、ターミナルを開いて、画像のあるフォルダーにcd
を実行し、実行します。
jhead -ts2012:10:29-10:28:03 *.jpg
-ts
スイッチを使用すると、必要な日時を指定し、それをexifヘッダーに一度にすべて書き込むことができます。ここで指定する形式はYYYY:MM:DD-HH:MM:SS
です。
時刻を指定せずに日付を変更したい場合は、代わりに使用します:
jhead -ds2012:10:29 *.jpg
たとえば、-model "D70"
を指定した場合、特定のカメラで撮影した写真の1つに対しても実行できますが、そのオプションは処理の最初に来る必要があり、「Nikon」ではなく「D70」、「S100」のようなものでなければなりませんD70 "。写真からexifの読み取り値を見て、正しいモデル番号を取得します。
jhead -model "D70" -ts2012:10:29-10:28:03 *.jpg
詳細については、 man jhead
を参照してください。
exiftool
このユーティリティには、jheadよりも多くのオプションがあり、 公式サイト で説明されているように、非常に包括的です。開発にはグラフィカルな exiftoolのフロントエンド がありますが、現時点では初期段階ですが、有望に見えます。
日付と時刻のシフトオプション、および使用できるフォーマットは、詳細に説明されているように非常に広範囲です この便利なpdfで 。 jheadと同様に、時刻と日付を変更するか、日付のみを変更するかを決定できます。この例では、日付と時刻の両方を変更します。
exiftool -AllDates="2012:03:14 12:25:00" *.jpg
上記の例では、写真の日付と時刻に特定の値を設定しています。 3年先など、特定の時間インデックスだけすべてをシフトしたい場合は、次を使用できます。
exiftool -AllDates+="3:0:0 0" *.jpg
シフト機能は、2012年に撮影されたものの、写真に突然2009年のマークが付けられた場合に非常に便利です。イコールの前にプラス記号またはマイナス記号を使用してください(-AllDates-=
または-AllDates+=
のように) 、必要な時間インデックスを割り当てるときに何を達成したいかによって異なります。そうしないと、結果のEXIFデータが期待どおりになりません。
exiftool
は、EXIFデータを編集する前に元のバックアップを作成します、末尾にoriginalを追加しますファイル名。
exiftool
は、JPEGでのみ機能するjhead
よりも多くの画像タイプをサポートしています。
詳細については、 man exiftool
を参照してください。
Shotwellでは、日付と時刻の変更は簡単です。調整する写真を選択し、次のようなメニューに移動します。
写真/日付と時刻の調整を選択します。次のようなメニューが表示されます。
すべての写真が同じ量だけずれている場合は、一度にすべてを実行できます。複数のカメラを使用し、それらが異なる量でオフになっている場合、それらを分割し、各バッチを個別に実行する必要があります。
これを説明するShotwellのヘルプページ こちら 。
この質問はEXIFを要求しましたが、画像メタデータには少なくとも画像に添付できる3つの標準、EXIF、XMP、およびIPTCがあります。多くの写真プログラムはこれらのすべての形式に書き込みますが、すべてではないため、すべての形式を確認することが重要です。
exif
は良いツールですが、exiv2
の方が優れていることがわかりました。 exif
の比較:
↪ exif 00000020.jpg
EXIF tags in '00000020.jpg' ('Intel' byte order):
--------------------+----------------------------------------------------------
Tag |Value
--------------------+----------------------------------------------------------
Software |Shotwell 0.22.0
Date and Time |1905:01:01 00:00:01
X-Resolution |72
Y-Resolution |72
Resolution Unit |Inch
Date and Time (Origi|1905:01:01 00:00:01
Date and Time (Digit|1905:01:01 00:00:01
User Comment |Dad
Exif Version |Exif Version 2.1
FlashPixVersion |FlashPix Version 1.0
Color Space |Internal error (unknown value 65535)
--------------------+----------------------------------------------------------
exiv2
へ:
↪ exiv2 -p a 00000020.jpg
Exif.Image.Software Ascii 16 Shotwell 0.22.0
Exif.Image.DateTime Ascii 20 1905:01:01 00:00:01
Exif.Image.ExifTag Long 1 86
Exif.Photo.DateTimeOriginal Ascii 20 1905:01:01 00:00:01
Exif.Photo.DateTimeDigitized Ascii 20 1905:01:01 00:00:01
Exif.Photo.UserComment Undefined 11 Dad
Iptc.Application2.Program String 8 Shotwell
Iptc.Application2.ProgramVersion String 6 0.22.0
Iptc.Application2.Keywords String 8 2015scan
Iptc.Application2.Keywords String 11 Lissner-Jay
Iptc.Application2.Keywords String 6 People
Xmp.exif.DateTimeOriginal XmpText 20 1905:01:01 08:00:01
Xmp.exif.DateTimeDigitized XmpText 20 1905-01-01T08:00:01Z
Xmp.xmp.CreateDate XmpText 20 1905-01-01T08:00:01Z
Xmp.dc.subject XmpBag 3 2015scan, Lissner-Jay, People
Xmp.digiKam.TagsList XmpSeq 2 People, People/Lissner-Jay
Xmp.MicrosoftPhoto.LastKeywordXMP XmpBag 2 People, People/Lissner-Jay
ここでの大きな違いは、XMPとIPTCのキーワードがまったくEXIFに含まれていないことです。したがって、私がそこを見ただけでは、キーワードがなかったと思います。
コマンドexiv2 -p a my-image.jpg
を指定したのは、3つの形式のメタデータがすべて表示されるためです。 -p a
を除外すると、EXIFデータのみが表示されます。