自主的20%るぅる

各々が自主的に好き勝手書くゆるふわ会社ブログ

カメラ買いましたのでExif解析(゚д゚)

どうもUCロスの僕です(´;ω;`)
本日放送のガンダムUC Re:96の最終話よかったですなぁ。
オードリーの演説はぐっとくるものがあります。
「私たちの中に眠る、可能性という名の神」
UCはこの一言につきますな。

ということで、僕にも新たな可能性という名の神が・・・やどったような?(゚д゚)

それはカメラです(゚д゚)
やっとカメラが来ました!
いやぁ〜長かった。注文してから1ヶ月半は待ちました。

とりあえず、色んな物を撮っていって腕を磨いていきたいと思います(`・ω・´)

なお、弊社にはカメラマンが多数在籍しているようですぞ。カメラとITに興味があるかたはぜひこちらも御覧ください(^ω^)

 

さて、カメラで撮った画像といえば、Exifデータですな。
以前仕事でExifを取り扱ったりしておりました。当時はPHPでごにょごにょしておりましたが、、今回はPythonでExifを見ていく方法をご紹介したいと思います。

ということでまずはPythonのインストールから。
インストール方法についてはこちらから

PythonでとりあえずExif情報を取り出すにはPillowというライブラリが有名なようです。
ということでPillowを入れてみます。

1
$ sudo pip3.5 install Pillow

これでインストール完了です。簡単ですね。
では実際にExifをぶっこ抜いて見ましょう(゚д゚)

サンプル画像はこの狛犬様です。


えぇ。私が近所の神社で撮ってきました(゚д゚)

そしてexifを抜いてみるPythonのスクリプトはこちらです。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
import pprint
from PIL import Image
import PIL.ExifTags
 
img = Image.open("sample.jpg")
exif_data = img._getexif()
 
exif = {
    PIL.ExifTags.TAGS[k]: v
    for k, v in img._getexif().items()
    if k in PIL.ExifTags.TAGS
}
 
pp = pprint.PrettyPrinter(width=41, compact=True)
 
pp.pprint(exif)

※インデントはしっかり守ってっくださいね。

 

そしてこれをexif.pyという名前で保存して実行します。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# python3.5 exif.py
{'ApertureValue': (361471, 100000),
 'BrightnessValue': (12324, 2560),
 'ColorSpace': 1,
 'Contrast': 0,
 'CustomRendered': 0,
 'DateTime': '2016:09:04 19:59:42',
 'DateTimeDigitized': '2016:09:04 '
                      '12:51:06',
 'DateTimeOriginal': '2016:09:04 '
                     '12:51:06',
 'DigitalZoomRatio': (16, 16),
 'ExifOffset': 206,
 'ExifVersion': b'0230',
 'ExposureBiasValue': (23, 10),
 'ExposureMode': 0,
 'ExposureProgram': 3,
 'ExposureTime': (1, 60),
 'FNumber': (35, 10),
 'FileSource': b'\x03',
 'Flash': 16,
 'FocalLength': (300, 10),
 'FocalLengthIn35mmFilm': 45,
 'FocalPlaneResolutionUnit': 3,
 'FocalPlaneXResolution': (83662979,
                           32768),
 'FocalPlaneYResolution': (83662979,
                           32768),
 'ISOSpeedRatings': 500,
 'LensModel': 'E 30mm F3.5 Macro',
 'LensSpecification': ((300, 10),
                       (300, 10),
                       (35, 10),
                       (35, 10)),
 'LightSource': 0,
 'Make': 'SONY',
 'MaxApertureValue': (926, 256),
 'MeteringMode': 2,
 'Model': 'ILCE-6000',
 'ResolutionUnit': 2,
 'Saturation': 0,
 'SceneCaptureType': 0,
 'SceneType': b'\x01',
 'Sharpness': 0,
 'ShutterSpeedValue': (5906891, 1000000),
 'Software': 'Adobe Photoshop Lightroom '
             '6.6.1 (Macintosh)',
 'WhiteBalance': 0,
 'XResolution': (240, 1),
 'YResolution': (240, 1)}

色々出てきました。これが噂のExifです。バージョンは2.3ですね。
使ってるカメラのメーカーや機種、レンズ、現像したソフトウェアの情報がだだ漏れです。

おそろしや((((;゚Д゚))))ガクガクブルブル

Exifはある程度基本的な仕様は決まっているものの、どのように実装するかはメーカーに委ねられている感があります。
メーカーが同じでも機種が異なれば保存される情報が全く異なることがあります。

その場合、メーカーの仕様にしたがってバイナリファイルを直接いじりながら情報を抜いたりもします。

(そんなことしなくてもある程度ライブラリがそろっていますが、そのライブラリの中では色々ごにょごにょ苦労の後が見受けられます(;´Д`))

色々と奥深いものです、Exifめ(;´Д`)

 

そんなExifさんのお話しでした。

Let’s share this article!

{ 関連記事 }

{ この記事を書いた人 }

アバター画像
もつ鍋

一応Webエンジニア。

最近はハーブやブルーベリーの栽培に凝ってます。
現在はレモンに挑戦中!
カメラもお勉強中。

痛風家系という宿命に抗って生きています。
なおまだ未経験。
尿酸値は7未満。

Ne pas perdre espoir C’est mon seul desir
望みを失わないこと それが私のたった一つの望み(゚д゚)

作業用BGMは澤野弘之氏

記事一覧