Python根据图片拍摄日期等整理重命名
关键词:exif、exifread等等。
最近在整理多年拍摄的图片,希望按照拍摄时间进行排序整理制作相册。
但是有的图片有水印显示拍摄日期;有的文件创建日期因为搬运创建日期和修改日期都已不能反映拍摄日期。
后通过查看图片详细信息,发现有拍摄日期信息。所以通过Python+exifread去读取拍摄日期信息,并对文件进行重命名排序。
1 关于EXIF
项目
|
信息(举例)
|
---|---|
制造厂商
|
|
相机型号
|
Canon EOS-1Ds Mark III
|
图象方向
|
正常(upper-left)
|
图象分辨率X
|
300
|
图象分辨率Y
|
300
|
分辨率单位
|
|
Software
|
|
最后异动时间
|
2005:10:06 12:53:19
|
YCbCrPositioning
|
2
|
曝光时间
|
0.00800 (1/125) sec
|
光圈值
|
F22
|
拍摄模式
|
光圈优先
|
ISO感光值
|
100
|
Exif信息版本
|
30,32,32,31
|
图象拍摄时间
|
2005:09:25 15:00:18
|
图象存入时间
|
2005:09:25 15:00:18
|
曝光补偿(EV+-)
|
0
|
测光模式
|
点测光(Spot)
|
关闭
|
|
镜头实体焦长
|
12 mm
|
Flashpix版本
|
30,31,30,30
|
图象色域空间
|
sRGB
|
图象尺寸X
|
5616pixel
|
图象尺寸Y
|
3744 pixel
|
2 exifread
exitfread是一个Python模块用于从图片中提取EXIF信息,支持的格式包括tiff、jpeg、png、webp、heic。
Tags被分为一下几类:Image、Thumnail、EXIF、GPS、Interoperability、MakeNote。
Image: information related to the main image (IFD0 of the Exif data).
Thumbnail: information related to the thumbnail image, if present (IFD1 of the Exif data).
EXIF: Exif information (sub-IFD).
GPS: GPS information (sub-IFD).
Interoperability: Interoperability information (sub-IFD).
MakerNote: Manufacturer specific information. There are no official published references for these tags.
3 使用exifread
安装exifread:
pip install exifread
下面代码从图片中提取拍摄日期,然后对文件进行按照配设日期进行重命名。
import os import exifread import shutil pic_dir='40图片整理/' output_dir='output/' if __name__ == '__main__': if not os.path.exists(output_dir): os.mkdir(output_dir) pic_file_lists = os.listdir(pic_dir) for pic_file in pic_file_lists: if "renamed" in pic_file: continue with open(pic_dir+pic_file, 'rb') as file_data: tags = exifread.process_file(file_data) file_date = str(tags['EXIF DateTimeOriginal']) if file_date == '': continue if '/' in file_date: file_year = file_date.split(' ')[0].split('/')[2] file_month = file_date.split(' ')[0].split('/')[0] file_day = file_date.split(' ')[0].split('/')[1] file_date_prefix = "renamed_"+file_year+'_'+file_month+'_'+file_day+'_' else: file_date_prefix = "renamed_"+file_date.split(' ')[0].replace(':', '_')+'_' shutil.copy(pic_dir+pic_file, output_dir+file_date_prefix+pic_file)
4 还可以做什么
由这个想到还可以做些什么呢?
1. 根据GPS信息,可以获取拍摄地点。按照地点进行分类。
2. Python+OpenCV进行人脸识别,根据人物进行分类。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了