我写了一个Python 3的CLI工具来修复图库中照片的创建日期(请参见这里)。我使用Pillow加载和保存图片,使用piexif处理EXIF数据的检索/修改。
我的问题是,我只想更改图片中的EXIF数据,而不重新压缩整个图片。看起来Pillow的保存功能不能实现此操作。
我的问题如下:
以下是我目前用来更改创建日期的代码:
我的问题是,我只想更改图片中的EXIF数据,而不重新压缩整个图片。看起来Pillow的保存功能不能实现此操作。
我的问题如下:
- 是否有更好的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)
exiftool
呢? - Mark Setchell