内容はこんな感じです。最近新しい携帯電話を購入しました。古い携帯電話から写真をコンピュータにエクスポートしてバックアップを作成しました。しかし、すべての写真はディレクトリにバックアップされており、明らかに乱雑で困難でした。探す。私のこれまでのやり方によれば、写真は年月ごとに名前が付けられたディレクトリ形式で保存されているため、プログラムを使用してこれらの写真を処理する方法がわかります。
以前一眼レフをしていたときに、デジタルカメラにはいくつかの標準プロトコルとフォーマットがあり、そのフォーマットの一つに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