PIL获取照片exif 批量修改手机照片名字为拍摄时间

 

每过一段时间,手机里的照片就要清理一遍,备份到硬盘上,但是时间越久,记忆越模糊,只能大概记得一张照片是在哪里、什么状态下拍的,却很难回忆起来具体的时间,所以想到将照片名字改成拍摄时间,这样就很方便以后查看了。

不是所有图片的 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 。

你可能感兴趣的:(python)