2016年9月14日水曜日

Python | 画像ファイルのExif情報を取り出す

普段デジカメで写真を撮ることが多いので、遠くない将来、撮りためた画像のExif情報から自分の傾向分析なんかをすることになる気がしています。

その時のために、画像ファイルのExif情報をPythonで書いたスクリプトを使って取得する方法を調べてみました。

ネットで検索すると、PIL(Python Image Library)というモジュールを使っている例が多いようなのですが、使い方がいまいちピンとこなかったので、別の方法として、ExifReadを使ってみることにしました。

ExifReadをDLする

ExifReadはこちらからDLできます。


モジュールを適切な場所に置く

解凍したモジュール一式を僕は"C:\Python27\Lib"の中に置きました。

スクリプトを書く

下を参考にしてみてください。
僕はこのサイトに教えてもらいました。

---
#!/usr/bin/env python
#-*- coding:utf-8 -*-

# 目的
# 画像ファイルからExif情報を取り出す

# 使い方
# 1.このスクリプトファイルを画像データのあるフォルダに置く
# 2.必要に応じて拡張子の指定部分を書き換える
# 3.実行する

from exif_py_develop import exifread
import glob

photos = glob.glob('*.JPG')

for f in photos:
    fname = open(f,'rb')
    tags = exifread.process_file(fname)

    for tag in tags:
        if tag not in ('JPEGThumbnail', 'TIFFThumbnail', 'Filename', 'EXIF MakerNote'):
            print "Key: %s, value %s" % (tag, tags[tag])
---

実行結果

スクリプトファイルは画像ファイルと同じフォルダに置いて実行します。
Exifにはたくさんの情報が入っていますが、例えば撮影日時であれば

Key: EXIF DateTimeDigitized, value 2016:08:24 16:44:22

2016年8月24日16時44分22秒に撮影された、と出力されます。

注意点やメモ

  • DL,解凍したモジュールを最初にインポートしています。
  • フォルダ内の全画像ファイル(拡張子JPG)を取得するのにglob関数を使いましたので、globモジュールもインポートしています。このとき、拡張子の指定は文字列で、大文字小文字も区別されます。

SyntaxHighlighter