最近碰上一件奇怪的事情,魅族Note9的照片导iCloud图库里没有位置信息,我一度以为是手机的原因,不能在Exif嵌GPS信息,我还用其它exif信息查看软件确认过,突然今天发现在Windows的属性里看到有GPS信息,这才意识到很可能是魅族Note9生成了非标的exif,导致其它软件不认,只能自己动手了。
搜了一圈,好像根本没人提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文件,直接丢到照片的目录下就能运行了。