写真はすべてGoogle Photosに集約しているのであるが,デジカメで撮った写真をDrag and DropでGoogle Photosに突っ込んだら,思っていた日付の箇所に写真が現れず悩む.アップロード直後その写真をAlbumに追加して,様子を見てみたら,(デジカメの)日付が1年ずれていたことが判明.ということでGoogle Photos上の該当ファイルを削除して,JPEGのExifを操作して再アップロード.
以前は知り合いからもらったPerl ScriptでExifをいじったりしていたのだが,発掘が面倒だったので jhead というコマンドを使うことにした(Debian package も存在する).
いろいろ試行錯誤をしたが,1年のずれを修正するのは至って簡単で,以下のとおり修正後の年を指定すれば良いだけ(他の情報はそのまま保持される).man によると「Date is specified as: yyyy:mm:dd, yyyy:mm, or yyyy」とのことなので,日付を修正するだけならこれが一番シンプル.
[Single file]
% jhead -ds 2016 DSC01448.JPG
[Bulk mode]
% jhead -ds 2016 DSC*.JPG
以下は -ts という Exif に保持されている『時刻』を変更するオプションを使おうとして試行錯誤した際の情報.以下のようにダンプした Exif 情報を sed で修正して -ts で突っ込む,というようなことも可能,というぐらい.
% jhead DSC01448.JPG
File name : DSC01448.JPG
File size : 3427630 bytes
File date : 2015:03:18 13:07:24
Camera make : SONY
Camera model : DSLR-A200
Date/Time : 2015:03:18 13:07:24
Resolution : 3872 x 2592
Flash used : Yes (auto)
Focal length : 18.0mm (35mm equivalent: 27mm)
Exposure time: 0.013 s (1/80)
Aperture : f/5.6
ISO equiv. : 250
Whitebalance : Auto
Metering Mode: pattern
Exposure : program (auto)
JPEG Quality : 95
% jhead DSC01448.JPG | sed '/^Date/!d;s/.*: //;s/ /-/'
2015:03:18-13:07:24
% jhead DSC01448.JPG | sed '/^Date/!d;s/.*: //;s/ /-/;s/^2015/2016/'
2016:03:18-13:07:24
% jhead -ts`jhead DSC01448.JPG | sed '/^Date/!d;s/.*: //;s/ /-/;s/^2015/2016/'` DSC01448.JPG
Modified: DSC01448.JPG
% jhead DSC01448.JPG | grep ^Date
Date/Time : 2016:03:18 13:07:24
% for i in *.JPG ; do
j=`jhead $i | sed '/^Date/!d;s/.*: //;s/ /-/;s/^2015/2016/'`
jhead -ts$j $i
done