pythonのPILを使ってExifを見る
2014-02-05 追記
pyexiv2というライブラリを使って読み書き方法も書きました。 対応する要素の種類も多いっぽい。
大抵のデジタル画像にはExif情報ってのが付いてます。 撮影地とか撮影した時間、使ったカメラのスペックとか設定が分かるやつね。 これをpythonから見る方法。
from PIL import Image, ExifTags img = Image.open(testfile) for key, value in img._getexif().items(): if key != 37500: print ExifTags.TAGS.get(key, repr(key)), '=', repr(value)
こんな感じで。
飛ばしている37500
ってのはMakerNoteというもので、カメラメーカーごとに独自のもののようです。
結構サイズのあるバイナリなので、表示せずにスキップしています。
内容を解析されている方が居らっしゃるようなので、興味があれば下記のリンクから是非。
この画像でやった場合の出力を置いておきます。結構情報量多いね。
ExifVersion = '0230' ComponentsConfiguration = '\x01\x02\x03\x00' CompressedBitsPerPixel = (4, 1) DateTimeOriginal = '2013:10:17 02:20:56' DateTimeDigitized = '2013:10:17 02:20:56' MaxApertureValue = (16, 10) FlashPixVersion = '0100' MeteringMode = 5 LightSource = 0 Flash = 0 FocalLength = (185, 10) 41996 = 0 CFAPattern = '\x02\x00\x02\x00\x00\x01\x01\x02' Make = 'NIKON CORPORATION' Model = 'NIKON 1 V2' SubsecTimeOriginal = '55' Orientation = 1 YCbCrPositioning = 2 41992 = 0 SensingMethod = 2 41988 = (1, 1) ExposureTime = (30, 10) FNumber = (32, 10) FileSource = '\x03' ExifInteroperabilityOffset = 21716 ExposureProgram = 1 ColorSpace = 1 GPSInfo = {0: (2, 3, 0, 0)} ISOSpeedRatings = 160 41987 = 0 41991 = 0 34864 = 2 Software = 'darktable 1.2.2' DateTime = '2013:10:17 02:20:56' 42036 = '1 NIKKOR 18.5mm f/1.8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x 00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x 00\x00\x00\x00\x00\x00\x00\x00\x00\x00' 41993 = 0 SceneType = '\x01' 41994 = 0 41985 = 0 41989 = 49 41990 = 0 SubsecTime = '55' 41986 = 1 ExifOffset = 200 SubsecTimeDigitized = '55'
参考: