スマートフォンやデジタルカメラで撮影した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とPillow、piexifを使えば、JPEG画像のカメラ情報、位置情報、サイズを簡単に取得できます。画像解析や地理情報と連携させたい場合には非常に有用です。
