Python3 如何获取照片的 Exif 信息?

事情是这样的,最近不是换了新手机了嘛,将旧手机里的照片导出到电脑中做一个备份,但是所有的照片都备份到一个目录中显然又乱又不好找。按照我以往的惯例都是按年/月命名的目录格式存储,所以就引出了如何使用程序来处理这些照片。

之前在玩单反的时候了解到数码相机都有一些标准的协议和格式,其中有一个 Exif 格式就能存储照片的拍摄时间,通过获取到拍摄时间和 Python 程序就可以让这些照片归位。

Exif 是什么

Exif 即可交换图像文件格式(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。

Exif 信息是图像文件格式内包含的一组拍摄参数,Exif 所记录的元数据信息非常丰富,主要包含了以下几类信息:

  • 拍摄日期
  • 拍摄器材(机身、镜头、闪光灯等)
  • 拍摄参数(快门速度、光圈F值、ISO速度、焦距、测光模式等)
  • 图像处理参数(锐化、对比度、饱和度、白平衡等)
  • 图像描述及版权信息
  • GPS定位数据
  • 缩略图
  • ...

示例代码:

python 复制代码
#!/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')

运行结果:

bash 复制代码
相机品牌: 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

相关推荐
Cyber4K11 分钟前
【Python专项】进阶语法-系统资源监控与数据采集(1)
开发语言·python·php
苍煜1 小时前
Java开发IO零基础吃透:BIO、NIO、同步异步、阻塞非阻塞
java·python·nio
AllData公司负责人2 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql
Flittly3 小时前
【LangGraph新手村系列】(5)时间旅行:浏览历史、分叉时间线与修改过去
python·langchain
2301_782040454 小时前
CSS Flex布局中如何实现导航栏与Logo的左右分布_利用justify-content- space-between
jvm·数据库·python
yaoxin5211234 小时前
400. Java 文件操作基础 - 使用 Buffered Stream I/O 读取文本文件
java·开发语言·python
用户8356290780515 小时前
使用 Python 自动创建 Excel 折线图
后端·python
小白学大数据5 小时前
面向大规模爬取:Python 全站链接爬虫优化(过滤 + 断点续爬)
开发语言·爬虫·python
WL_Aurora5 小时前
【每日一题】贪心
python·算法
IT策士6 小时前
Python 中间件系列:redis 深入浅出
redis·python·中间件