Python3で写真のExif情報を取得するにはどうすればよいですか?

内容はこんな感じです。最近新しい携帯電話を購入しました。古い携帯電話から写真をコンピュータにエクスポートしてバックアップを作成しました。しかし、すべての写真はディレクトリにバックアップされており、明らかに乱雑で困難でした。探す。私のこれまでのやり方によれば、写真は年月ごとに名前が付けられたディレクトリ形式で保存されているため、プログラムを使用してこれらの写真を処理する方法がわかります。

以前一眼レフをしていたときに、デジタルカメラにはいくつかの標準プロトコルとフォーマットがあり、そのフォーマットの一つにExif写真の撮影時刻を保存することができ、撮影時刻とPythonプログラムを取得することで写真を元の場所に戻すことができることを知りました。

Exifとは何ですか

Exif交換可能画像ファイル形式は、デジタルカメラ写真に特化して設計されており、デジタル写真の属性情報や撮影データを記録できます。

Exif情報とは、画像ファイル形式に含まれる撮影パラメータの集合であり、Exif 記録されるメタデータ情報は非常に豊富で、主に以下のような情報が含まれます。

  • 撮影日
  • 撮影機材(ボディ、レンズ、フラッシュなど)
  • 撮影パラメータ(シャッタースピード、絞りF値、ISO感度、焦点距離、測光モードなど)
  • 画像処理パラメータ(シャープネス、コントラスト、彩度、ホワイトバランスなど)
  • 画像の説明と著作権情報
  • GPS位置データ
  • サムネイル

サンプルコード:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import exifread


def main(image):

    with open(image, 'rb') as f:

        exif = exifread.process_file(f)

        # 设备信息
        print('相机品牌:', exif['Image Make'])
        print('相机型号:', exif['Image Model'])

        # 相片信息
        print('拍摄时间:', exif['Image DateTime'])
        print('图片大小:', exif['EXIF ExifImageLength'], '*', exif['EXIF ExifImageWidth'])

        # 位置信息
        lng = f"{
      
      exif['GPS GPSLongitudeRef']}{
      
      exif['GPS GPSLongitude']}"
        lat = f"{
      
      exif['GPS GPSLatitudeRef']}{
      
      exif['GPS GPSLatitude']}"
        print('经纬度:', lng, lat)


if __name__ == '__main__':
    main('IMG_9871.jpeg')

操作結果:

相机品牌: Apple
相机型号: iPhone XS Max
拍摄时间: 2023:04:06 18:32:56
图片大小: 3024 * 4032
经纬度: E[116, 29, 2391/100] N[40, 2, 481/50]

もちろん、Exif含まれる情報はこれよりもはるかに多く、必要な特定のパラメーターについては、次の記事を参照してください:
https://juejin.cn/post/6844904033027620878
https://www.biaodianfu.com/exif-python.html

おすすめ

転載: blog.csdn.net/yilovexing/article/details/133268741