EXIFと聞くと、あまり良いイメージがないかもしれません。
個人情報に関するリスクばかりが、強調されているように感じます。
しかし、本当はEXIFはいい子なんです。
利用する側が、注意さえすれば危険なモノでも何でもありません。
この記事では、そのEXIFをPythonで読み取るための方法を解説しています。
具体的には、ExifReadというライブラリを使ってEXIFを読み取ります。
本記事の内容
- ExifReadとは?
- ExifReadのシステム要件
- ExifReadのインストール
- ExifReadの動作確認
それでは、上記に沿って解説していきます。
ExifReadとは?
ExifReadとは、デジタル画像ファイルからExifメタデータを抽出するための使いやすいPythonライブラリです。
難しく言ってますが、デジタル画像ファイルは写真のことを指します。
本当にたくさんの情報がEXIFには詰まっています。
その中でも、以下の3つの情報については説明しておきます。
- いつ(日時)
- 誰が(個人名)
- どこで(場所)
写真を管理する際、これらの情報は役に立ちます。
旅行先ごと、年代ごと、担当者ごと、このように管理ができます。
つまり、ExifReadは写真を管理するために利用できるのです。
Pythonなら、読み込んだEXIFを元に自由に処理することができます。
以上が、ExifReadについての説明です。
次に、ExifReadのシステム要件を確認します。
ExifReadのシステム要件
ExifReadの最新バージョンは、2.3.2となります。
この最新バージョンは、2020年10月30日にリリースされています。
それなりにメンテナンスはされているようです。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
基本的には、Pythonさえ動けばどこでも動くということでしょう。
サポート対象となるPythonのバージョンは、少し注意が必要となります。
まずは、Python 3系のみという点です。
Python 2系はアウトになります。
さすがにもうPython 2系は無視でよいでしょう。
次に、公式で記載されているバージョンは以下という点です。
- Python 3.5
- Python 3.6
- Python 3.7
- Python 3.8
ここには、Python 3.9がありません。
Python 3.9のリリースは、2020年10月5日でした。
タイミング的に、検証できなかっただけでしょう。
実際、私は以下のバージョンで検証しています。
>python -V Python 3.9.1
以上、ExifReadのシステム要件を説明しました。
Python 3系ということさえ注意すれば、それ以外は何も考える必要はありません。
では、次にExifReadのインストールを行いましょう。
ExifReadのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.0.1 setuptools 54.0.0
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、ExifReadのインストールです。
ExifReadのインストールは、以下のコマンドとなります。
pip install ExifRead
インストールは、一瞬で終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ---------- ------- ExifRead 2.3.2 pip 21.0.1 setuptools 54.0.0
最新版となるExifRead 2.3.2だけが、インストールされました。
依存関係のあるライブラリのインストールは、ありません。
システム要件もシンプルであり、容易にインストールが可能です。
つまり、ExifReadは気軽に導入できるライブラリと言えます。
ExifReadの動作確認
ExifReadの動作確認用のサンプルコードは、以下。
import exifread import pprint IMG_PATH = "test.jpg" # Open image file for reading (binary mode) f = open(IMG_PATH, 'rb') # Return Exif tags tags = exifread.process_file(f) pprint.pprint(tags)
上記を実行すると、以下のような情報が表示されます。
{'EXIF ApertureValue': (0x9202) Ratio=54823/32325 @ 718, 'EXIF BrightnessValue': (0x9203) Signed Ratio=17278/1849 @ 726, 'EXIF ColorSpace': (0xA001) Short=Uncalibrated @ 490, 'EXIF ComponentsConfiguration': (0x9101) Undefined=YCbCr @ 334, 'EXIF DateTimeDigitized': (0x9004) ASCII=2021:02:11 09:34:44 @ 666, 'EXIF DateTimeOriginal': (0x9003) ASCII=2021:02:11 09:34:44 @ 646, 'EXIF ExifImageLength': (0xA003) Long=3024 @ 514, 'EXIF ExifImageWidth': (0xA002) Long=4032 @ 502, 'EXIF ExifVersion': (0x9000) Undefined=0231 @ 262, ・・・
もちろん、上記サンプルコードを実行するには、写真画像が必要となります。
その画像の指定は、以下で行います。
IMG_PATH = "test.jpg"
以上、ExifReadの動作確認でした。
これにて、本記事は終了とします。