【Python】ExifReadをインストールして写真のEXIFを確認する

【Python】ExifReadをインストールして写真のEXIFを確認する プログラミング

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の動作確認でした。

これにて、本記事は終了とします。

タイトルとURLをコピーしました