PythonでEXIF情報を取得

Python

本記事では自分への備忘録としてPythonでEXIF情報を取得する方法をまとめます。

EXIF情報

EXIF情報とはなんぞやとGoogleに聞いたところAIが以下のように回答してくれました。

Exif情報(イグジフじょうほう)とは、デジタルカメラやスマートフォンで撮影した画像ファイルに自動的に埋め込まれる「Exchangeable Image File Format」(交換可能な画像ファイル形式)の略で、「いつ」「どこで」「どんな設定で」撮影したかを示す付加情報(メタデータ)です。
撮影日時、カメラ機種名、レンズ情報、絞り値、シャッタースピード、ISO感度、そしてGPSによる撮影位置情報などが記録され、写真の管理や技術向上に役立ちますが、プライバシー保護のため公開時には注意し、不要な場合は削除することが推奨されます。 

PythonでExif情報を取得する

はじめに、PythonでExif情報を取得するために使用するライブラリをpipで取得します。

Bash
pip install exifread

あとはexifreadimportしてファイルからタグを取得するだけです。

Python
import exifread

# 対象ファイルパス
file_path = "ファイルパス"

try:
  # ファイルオープン
  with open(file_path, 'rb') as f:
    # 全タグ取得
    tags = exifread.process_file(f, details=False)
    
    print(f"メーカー: {tags['Image Make']}")
    print(f"機種: {tags['Image Model']}")
    print(f"レンズ: {tags['EXIF LensModel']}")
    print(f"焦点距離: {tags['EXIF FocalLength']}")
    print(f"F値: {eval(str(tags['EXIF FNumber']))}")
    print(f"シャッタースピード: {tags['EXIF ExposureTime']}")
    print(f"ISO感度: {tags['EXIF ISOSpeedRatings']}")

except Exception as e:
  print(f"Error reading {file_path}: {e}")

手順としては、以下の通りです。

  1. 対象ファイルをバイナリモードで開く
  2. 開いたファイルをexifread.process_fileに渡してタグ一覧を取得
  3. 取得したタグ一覧から必要な情報を取得

撮影したカメラや撮影した際の情報を取得する場合は下表のタグを取得します。

情報タグ備考
メーカーImage Make
機種Image Model
レンズEXIF LensModel
焦点距離EXIF FocalLength
F値EXIF FNumber「x/y」の形式で取得されるため、eval(str(tags[‘EXIF FNumber’]))とすると良い
シャッタースピードEXIF ExposureTime
ISO感度EXIF ISOSpeeedRatings

終わりに

PythonでEXIF情報を取得する方法をまとめました。

写真データの整理をする際にEXIF情報を元にしたいこととか結構あったのでPythonでスクリプトを作る際にEXIF情報を取得する方法を調べましたが、結構簡単ですね。

不明な点や誤っている点がありましたらコメントやSNSまでお願いします。

コメント

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