Ошибка при попытке получить EXIF-теги изображения - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь получить теги EXIF ​​изображения JPG. Для этого я использую piexif модуль.
Проблема в том, что я получаю ошибку - KeyError, говоря:

Traceback (most recent call last):
  File "D:/PythonProjects/IMGDateByNameRecovery/recovery.py", line 98, in selectImages
    self.setExifTag(file_str)
  File "D:/PythonProjects/IMGDateByNameRecovery/recovery.py", line 102, in setExifTag
    exif = piexif.load(img.info["Exif"])
KeyError: 'Exif'

Я сделал все как в документацииВот несколько вопросов по StackOverflow и на сайте Pypi. Все то же самое. Мой код:

    img = Image.open(file)
    exif_dict = piexif.load(img.info["exif"])

    altitude = exif_dict['GPS'][piexif.GPSIFD.GPSAltitude]
    print(altitude)

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

1 Ответ

1 голос
/ 09 октября 2019

Подушка добавляет ключ exif только к Image.info, если существуют данные EXIF. Поэтому, если изображения не имеют данных EXIF, ваш скрипт вернет ошибку, поскольку ключ не существует.

Вы можете посмотреть, какие форматы изображений поддерживают данные info["exif"] в Документация по форматам файлов изображений .

Вы могли бы сделать что-то вроде этого ...

img = Image.open(file)
exif_dict = img.info.get("exif")  # returns None if exif key does not exist

if exif_dict:
    exif_data = piexif.load(exif_dict
    altitude = exif_data['GPS'][piexif.GPSIFD.GPSAltitude]
    print(altitude)
else:
    pass
    # Do something else when there is no EXIF data on the image.

Использование mydict.get("key") вернет значение None, если ключ не существует, а mydict["key"]вернуть KeyError.

...