修正非标EXIF属性

最近碰上一件奇怪的事情,魅族Note9的照片导iCloud图库里没有位置信息,我一度以为是手机的原因,不能在Exif嵌GPS信息,我还用其它exif信息查看软件确认过,突然今天发现在Windows的属性里看到有GPS信息,这才意识到很可能是魅族Note9生成了非标的exif,导致其它软件不认,只能自己动手了。

Windows的属性可以显示坐标
其它软件下读不出来坐标信息,只有GPS时间戳

搜了一圈,好像根本没人提EXIF标不标准的事情,算了,只能自己写脚本去转了,还是用最熟悉的Python吧,Python里面我自己最熟还是2.7了。。。还好PIL库也能识别到GPS信息,然后东拼拼西凑凑,终于可以把EXIF搞正常了,原理很简单,先用Python的PIL把exif读出来,再重新写到照片里面去就好了,唯一的小问题是因为重新生成了jpg文件,图片变大了一点点,不过无所谓了。

# coding=utf-8
import piexif
from PIL import Image
import os
if __name__ == '__main__':
    filelist = os.listdir('.')
    file_num=len(filelist)
    for k in range(1,file_num):
        filename=filelist[k]
        filename_split=filename.split('.')
        filename_type=filename_split[len(filename_split)-1].lower()
        if filename_type=='jpg' or filename_type=='jpeg':
            print('Converting...'+filename)
            img = Image.open(filename)
            exif_dict = piexif.load(img.info['exif'])
            exif_bytes = piexif.dump(exif_dict)
            img.save(filename, exif=exif_bytes, format='JPEG', subsampling=0, quality=100)

这里做了完善,自动搜索该目录下的jpg或者jpeg文件,转换一下就好了,用pyinstaller -F exif.py编译成exe文件,直接丢到照片的目录下就能运行了。

分享到:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注