我在Python中创建了一个小脚本,可以根据文件名设置我的旧Whatsapp图片的exif数据。
我使用了piexif和PIL(Pillow)包。
import piexif
from PIL import Image
from collections import defaultdict
img = Image.open(fname)
try:
exif_dict = piexif.load(img.info["exif"])
except KeyError:
exif_dict = defaultdict(dict)
exif_dict['Exif'][piexif.ExifIFD.DateTimeOriginal] = exiftime(date)
exif_dict['Exif'][piexif.ExifIFD.DateTimeDigitized] = exiftime(date)
exif_bytes = piexif.dump(exif_dict)
img.save('%s' % fname, "jpeg", exif=exif_bytes)
exiftime()函数仅用于格式化日期。
但是,脚本正在设置一些exif字段,我不会修改压缩或类似的东西。
我的问题是,在运行该脚本后,图片会变得更小。 我用一些示例图像测试了这个脚本,例如使用分辨率为6000x4000的尼康D5300拍摄的照片。原始文件大约有12Mb,在脚本之后只有4Mb。
脚本是否会导致图片质量下降,还是只是更好的压缩?
答案 0 :(得分:2)
Pillow的.save根据文档自动压缩,默认值为75%。你可以将其提高到100%(添加质量= 100),这将最大限度地减少压缩,看起来它会完全跳过一些压缩组件,但Pillow显然无法完全跳过压缩。很少有包这样做,我不知道任何Python模块的形式。请注意,文档说不要提高质量超过95,我可以证明这样做会输出一个BIGGER文件..很奇怪。
答案 1 :(得分:1)
一个较晚的答案,但是类似的帖子指出了一种解决方案here,该解决方案仅在文件中写入exif信息(使用piexif)。 结果,由于未执行任何压缩(通过“保存”命令),因此图像的内容不会更改。