BlankTar

about | blog | works | photo

前にPILでExifを読む方法を書いたけれど、今回は書き込む方法。
どうやらPILでは出来ないらしいので、pyexiv2ってライブラリを使います。
ダウンロードは公式サイトからどうぞ。インストールは適当に。

Exifデータを読み込む

>>> img = pyexiv2.ImageMetadata('test.jpg')
>>> img.read()
>>> img.exif_keys
[ ... keyのリスト ... ]
>>> value = img['Exif.Image.DateTime']
>>> value.value
datetime.datetime(2014, 1, 24, 15, 40, 16)
>>> value.raw_value
'2014:01:24 15:40:16'

みたいな感じ。
時間とかパースした状態で返してくれるから、もしかしたらPIL使うよりも楽かも。
対応している要素の種類も多いっぽいし。

Exifデータを書き込む

>>> img = pyexiv2.ImageMetadata('test.jpg')
>>> img.read()
>>> img['Exif.Image.UserComment'] = 'this is test'
>>> img.write()

こんな感じで書き込める。
結構簡単。

他の画像からExifデータだけコピーする

>>> src = pyexiv2.ImageMetadata('src.jpg')
>>> src.read()
>>> dst = pyexiv2.ImageMetadata('dst.jpg')
>>> dst.read()
>>> src.copy(dst)
>>> dst.write()

以上、これだけでコピーできる。dst.jpgを上書きするので注意。

キーが妙に長いのが辛いねー。ま、楽だからいいけれど。

参考:
Tutorial - pyexiv2 v0.3.2 documentation
API documentation - pyexiv2 v0.3.2 documentation

< PILで縦横比保ったまま画像を縮小 ubuntuのpyexiv2を無理やりgentooに移植した話。 >