事情是这样的,最近不是换了新手机了嘛,将旧手机里的照片导出到电脑中做一个备份,但是所有的照片都备份到一个目录中显然又乱又不好找。按照我以往的惯例都是按年/月命名的目录格式存储,所以就引出了如何使用程序来处理这些照片。
之前在玩单反的时候了解到数码相机都有一些标准的协议和格式,其中有一个 Exif
格式就能存储照片的拍摄时间,通过获取到拍摄时间和 Python
程序就可以让这些照片归位。
Exif
即可交换图像文件格式(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
Exif
信息是图像文件格式内包含的一组拍摄参数,Exif
所记录的元数据信息非常丰富,主要包含了以下几类信息:
示例代码:
#!/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