PythonでJPEGのExif情報を読み取る方法|GPS・カメラモデル・画像サイズを簡単取得 | スクラムとは 仕事が進まなく技術力もないリーダーのごっこ遊び

PythonでJPEGのExif情報を読み取る方法|GPS・カメラモデル・画像サイズを簡単取得

スマートフォンやデジタルカメラで撮影したJPEG画像には、位置情報(GPS)、カメラのメーカーやモデル、写真の解像度などのExif情報(Exchangeable image file format)が含まれていることがあります。この記事では、Pythonを使ってJPEG画像からExif情報を抽出する方法をわかりやすく解説します。

Python初心者でもすぐに使えるように、コピペ可能なサンプルコードもご紹介します。Exif情報を取得して、画像整理や地図との連携、機械学習の前処理などに活用してみましょう。


Exif情報とは?

Exif(Exchangeable Image File Format)は、デジタルカメラやスマホで撮影した画像に付加されるメタデータです。主に以下のような情報が含まれています:

  • 撮影日時

  • カメラのメーカー(Make)

  • カメラのモデル(Model)

  • 露出、ISO、シャッター速度などの設定

  • GPSによる位置情報(緯度・経度)

  • 画像の幅と高さ(サイズ)

これらの情報は、画像整理やAI画像分類、地図上の位置表示など、多くの分野で活用されています。


PythonでExif情報を取得する方法

PythonでExif情報を取得するには、以下のライブラリが便利です:

  • Pillow:画像の読み込み・サイズ取得に使用

  • piexif:Exif情報の読み書きに特化

まずは必要なライブラリをインストールしましょう。

pip install pillow piexif

実践コード:Exif情報の取得

以下のコードでは、JPEG画像からカメラ名(Make・Model)、画像サイズ、GPS位置情報(緯度・経度)を取得しています。

from PIL import Image
import piexif

def dms_to_degrees(dms, ref):
    degrees = dms[0][0] / dms[0][1]
    minutes = dms[1][0] / dms[1][1]
    seconds = dms[2][0] / dms[2][1]
    result = degrees + (minutes / 60.0) + (seconds / 3600.0)
    if ref in ['S', 'W']:
        result = -result
    return result

def get_exif_info(image_path):
    img = Image.open(image_path)
    exif_dict = piexif.load(img.info['exif'])

    make = exif_dict['0th'].get(piexif.ImageIFD.Make, b'').decode('utf-8', errors='ignore')
    model = exif_dict['0th'].get(piexif.ImageIFD.Model, b'').decode('utf-8', errors='ignore')
    width, height = img.size

    gps_info = exif_dict.get('GPS', {})
    lat = lon = None
    if piexif.GPSIFD.GPSLatitude in gps_info and piexif.GPSIFD.GPSLongitude in gps_info:
        lat = dms_to_degrees(gps_info[piexif.GPSIFD.GPSLatitude],
                             gps_info[piexif.GPSIFD.GPSLatitudeRef].decode())
        lon = dms_to_degrees(gps_info[piexif.GPSIFD.GPSLongitude],
                             gps_info[piexif.GPSIFD.GPSLongitudeRef].decode())

    return {
        "Make": make,
        "Model": model,
        "Width": width,
        "Height": height,
        "Latitude": lat,
        "Longitude": lon
    }

# 使用例
info = get_exif_info("example.jpg")
print(info)

Exif情報を簡単に取得することができます。位置情報が含まれていれば、Googleマップとの連携も可能です。


注意点と補足

  • すべての画像にExif情報があるとは限りません(SNS経由で保存された画像は除去されることが多い)

  • GPS情報はオフになっている場合は記録されません

  • piexifはJPEG形式に対応しています(PNGなどにはExifは含まれません)


まとめ:Pythonで画像メタ情報を自在に操ろう

PythonとPillowpiexifを使えば、JPEG画像のカメラ情報、位置情報、サイズを簡単に取得できます。画像解析や地理情報と連携させたい場合には非常に有用です。