Ubuntuのpyexiv2で画像Exif情報を読み取り

Ubuntu10.04で画像のExif情報を操作したい場合、いくつか方法がありますが、今回はpyexiv2を試してみました。


Ubuntu10.04環境では、パッケージが用意されているので、コマンド一発でインストールができます。

$ sudo apt-get install python-pyexiv2


インストールは簡単ですが、ここから注意が必要です。


pyexiv2のチュートリアル通りにやろうとすると、ImageMetadataメソッドを使うとき、ImageMetadataをインポートするときにエラーが出ます。


>>> metadata = pyexiv2.ImageMetadata('test.jpg')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'ImageMetadata'
>>>
>>> from pyexiv2 import ImageMetadata
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name ImageMetadata


そこで、pyexiv2のhelp (help(pyexiv2)で見れます)の中を見てみると、ImageMetadataの記述がどこにもないんですが、ImageMetadataを使わないでExifタグの一覧を表示する方法が書かれています。


Ubuntu上でうまくいかなかったチュートリアルの方法(WindowsXP上ではエラーはでませんでした)と、うまくいったhelpに書かれている手順の両方をメモしておきます。

// チュートリアルの手順 (ubuntuでは失敗しました)

>>> import pyexiv2
>>> metadata = pyexiv2.ImageMetadata('test.jpg')
>>> metadata.read()

// helpの手順 (ubuntuでも実行できました)
>>> import pyexiv2
>>> image = pyexiv2.Image('test/smiley.jpg')
>>> image.readMetadata()
>>> print image.exifKeys()


これでようやくスタートラインに立てました。


現在、画像のExif情報を扱う簡単な(アプリと呼ぶほど大きくもない)スクリプトを書いています。