在不重新压缩 JPEG 图像的情况下更改 exif 数据
Changing exif data without re-compressing JPEG image
我编写了一个 python 3 CLI 工具来修复库中照片的创建日期(参见 here。
我使用 Pillow 加载和保存图像,使用 piexif 处理 exif 数据 retrieval/modification。
我的问题是我只想更改图片中的 EXIF 数据,而不是重新压缩整个图像。看来枕头救不了那个。
我的问题是:
- 我可以使用任何更好的 exif 库来仅处理 exif 数据(到目前为止我尝试了 py3exiv2、pexif 和 piexif)?
- 如果不是,有没有办法指示 Pillow 在保存时只更改图像的 exif 而无需重新压缩?
谢谢!
到目前为止,这是我用来更改创建日期的代码:
# Get original exif data
try:
exif_dict = piexif.load(obj.path)
except (KeyError, piexif._exceptions.InvalidImageDataError):
logger.debug('No exif data for {}'.format(obj.path))
return
# Change creation date in exif_dict
date = obj.decided_stamp.strftime('%Y:%m:%d %H:%M:%S').encode('ascii')
try:
exif_dict['Exif'][EXIF_TAKE_TIME_ORIG] = date
except (KeyError, piexif._exceptions.InvalidImageDataError):
return
exif_bytes = piexif.dump(exif_dict)
# Save new exif
im = Image.open(obj.path)
im.save(obj.path, 'jpeg', exif=exif_bytes)
在你的情况下,我认为不需要使用 Pillow。
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, obj.path)
我编写了一个 python 3 CLI 工具来修复库中照片的创建日期(参见 here。
我使用 Pillow 加载和保存图像,使用 piexif 处理 exif 数据 retrieval/modification。
我的问题是我只想更改图片中的 EXIF 数据,而不是重新压缩整个图像。看来枕头救不了那个。
我的问题是:
- 我可以使用任何更好的 exif 库来仅处理 exif 数据(到目前为止我尝试了 py3exiv2、pexif 和 piexif)?
- 如果不是,有没有办法指示 Pillow 在保存时只更改图像的 exif 而无需重新压缩?
谢谢!
到目前为止,这是我用来更改创建日期的代码:
# Get original exif data
try:
exif_dict = piexif.load(obj.path)
except (KeyError, piexif._exceptions.InvalidImageDataError):
logger.debug('No exif data for {}'.format(obj.path))
return
# Change creation date in exif_dict
date = obj.decided_stamp.strftime('%Y:%m:%d %H:%M:%S').encode('ascii')
try:
exif_dict['Exif'][EXIF_TAKE_TIME_ORIG] = date
except (KeyError, piexif._exceptions.InvalidImageDataError):
return
exif_bytes = piexif.dump(exif_dict)
# Save new exif
im = Image.open(obj.path)
im.save(obj.path, 'jpeg', exif=exif_bytes)
在你的情况下,我认为不需要使用 Pillow。
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, obj.path)