うちのプリンターには SD カードから画像を読み込んで印刷する機能がある。このプリンターで日付を焼き込もうとすると、EXIF ではなく、ファイルのタイムスタンプを参照するらしく、レタッチしたデータを印刷するとおかしな日付が焼き込まれてしまう。
そこで MacOSXでファイルの作成日時と更新日時を変更する を参考に、ファイルのタイムスタンプを操作してみた。
任意の日時に設定する
$ datetime="2014-04-08:12:00:00"
$ d=`date -jf "%Y-%m-%d:%H:%M:%S" "$datetime" +'%m/%d/%Y %H:%M:%S'`
$ setfile -m "$d" hoge.jpg
FAT32 な SD カードで作成日と変更日を変更できた。
EXIF の撮影日時に合わせる
EXIF データの読み込みのため、パッケージをインストールしておく。
$ brew install exif
撮影日時は Date and Time (Original)
というタグで取り出せる。
取り出せたら、あとは先ほど同様 setfile
で設定するだけ。
$ exif_datetime=`exif -m -t 'Date and Time (Original)' hoge.jpg`
$ d=`date -jf '%Y:%m:%d %H:%M:%S' "$exif_datetime" +'%m/%d/%Y %H:%M:%S'`
$ setfile -m "$d" hoge.jpg
まとめ
#!/bin/sh -e
adjust_to_exif()
{
exif_datetime=`exif -m -t 'Date and Time (Original)' "$1"`
d=`date -jf '%Y:%m:%d %H:%M:%S' "$exif_datetime" +'%m/%d/%Y %H:%M:%S'`
setfile -m "$d" "$1"
echo "$1: $d"
}
adjust_to_exif "$1"