手动修改图片exif信息,如何用python代码实现,求指导

在网站上爬取的图片,部分不能修改exif信息

import piexif
 
save_filename = 'F:/CodeWar/spider/exif/01.jpg'
im = Image.open(save_filename)

print(im.info)
exif_dict = piexif.load(im.info["exif"])
 
exif_dict["0th"][piexif.ImageIFD.Copyright] = '写入实验'.encode()

exif_bytes = piexif.dump(exif_dict)
im.save(save_filename, exif=exif_bytes)

运行程序报错

    exif_dict = piexif.load(im.info["exif"])
KeyError: 'exif'

print(im.info)显示字典缺失exif键值对

{'jfif': 257, 'jfif_version': (1, 1), 'dpi': (96, 96), 'jfif_unit': 1, 'jfif_density': (96, 96), 'comment': b'CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), quality = 95\n'}

如果在图片属性的详细信息栏任意一个可填数据处,手动输入任何数据,再运行程序,便可以用代码修改exif信息

img

运行程序后可以看到,在程序修改exif之前,手动输入数据的结果就是im.info里自动加入了exif键值对,所以后续程序处理的时候,才不会找不到exif而报出KeyError: 'exif'

img

因为处理的图片比较多,需要修改的信息也多,想知道上面手动的过程如何用代码执行,或者有没有其他方法,求指导

上述问题图片爬自下图网站的缩略图

img

先判断字典中存不存在exif这个key,不存在的话添加一个空或者自定义值不就行了 piexif.load 调用之前

exif_dict = piexif.load(im.info["exif"]) if "exif" in im.info else piexif.load(自定义填充值)

每个图片都写一次空的就可以:

exif_dict={} 
exif_bytes = piexif.dump(exif_dict)
im.save(save_filename, exif=exif_bytes)

感觉exif_dict这个是有固有格式的,可能需要打开开关才行,随便定义个空集不行,最后找到了用其他软件批量修改的方法了,谢谢以上各位