Изменение данных EXIF ​​без повторного сжатия изображения JPEG - PullRequest
0 голосов
/ 02 июня 2018

Я пишу инструмент Python 3 CLI, чтобы исправить даты создания фотографий в библиотеке (см. здесь .

. Я использую подушку, чтобы загрузить и сохранить изображение, и piexif для обработки данных exif.поиск / модификация.

Проблема, с которой я столкнулся, заключается в том, что я хочу изменить только EXIF-данные на изображениях, а не перепаковать все изображение. Кажется, что сохранение подушкой не может этого сделать.

Мой вопрос:

  1. Любая лучшая библиотека exif, которую я мог бы использовать, чтобы играть только с данными exif (до сих пор я пробовал py3exiv2, pexif и piexif)?
  2. Если нет,Есть ли способ указать Подушке только изменить 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)

1 Ответ

0 голосов
/ 03 июня 2018

В вашем случае, я думаю, что не нужно использовать подушку.

exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, obj.path)
...