每过一段时间,手机里的照片就要清理一遍,备份到硬盘上,但是时间越久,记忆越模糊,只能大概记得一张照片是在哪里、什么状态下拍的,却很难回忆起来具体的时间,所以想到将照片名字改成拍摄时间,这样就很方便以后查看了。
不是所有图片的 exif 中都包含有时间信息的, 我最早用的手机是小米,后来用的苹果,拍照的图片都是 .JPG 格式,.PNG大多是截图,还有几张 .JPG不知道是什么原因,也拿不到时间,所以要过滤一下。
另外还有同名的 .AEE(小米) .MOV(苹果) 文件 , 要同步修改一下名字。
具体代码如下,exif中除了时间信息,还有手机机型、位置等一系列信息。
import PIL.Image
import PIL.ExifTags
import os
def modify_pic_name():
os.chdir(r'H:\picture_back\1111')
jpg_map = {}
for f in os.listdir():
if not (f.endswith('.JPG')):
continue
img = PIL.Image.open(f)
exif = {
PIL.ExifTags.TAGS[k]: v
for k, v in img._getexif().items()
if k in PIL.ExifTags.TAGS
}
try:
date_time = exif['DateTime']
except:
date_time = ''
if date_time == '':
continue
print(f, date_time)
date_time = date_time.replace(':', '').replace(' ', '-')
jpg_map[f] = date_time
for kv in jpg_map.keys():
date_time = jpg_map[kv]
i = 1
while os.path.exists(date_time + '.JPG'):
date_time = date_time + '+' + str(i)
i += 1
os.rename(kv, date_time + '.JPG')
mov_name = kv[:-4] + '.MOV'
if (os.path.exists(mov_name)):
os.rename(mov_name, date_time + '.MOV')
aee_name = kv[:-4] + '.AEE'
if (os.path.exists(aee_name)):
os.rename(aee_name, date_time + '.AEE')
if __name__ == '__main__':
modify_pic_name()
另外 exifread 模块也可以获取到exif 。