やるきなし

2016/03/19 11:26 / JPEG Exif 変更操作

写真はすべて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