EXIF
-данных фотографии.Код ниже читает словарь EXIF
-кодов и их значений из фотографии 'photo.jpg'
и сопоставляет коды с известными значениями ExifTags.TAGS
:
from PIL import Image, ExifTags # присваиваем словарь с известными # EXIF-кодами переменной `tags` tags = ExifTags.TAGS # открываем изображение with Image.open('photo.jpg') as img: # получаем словарь EXIF-кодов # из изображения 'photo.jpg' exif = img._getexif() for key, val in exif.items(): # сопоставляем `EXIF`-коды с известными # значениями из `ExifTags.TAGS` print(tags.get(key, key), ':', val)
Подмодуль ExifTags
предоставляет несколько классов enum.IntEnum
, которые содержат константы и имена в открытом виде для различных известных тегов EXIF
.
EXIF
-кодов в виде классов enum.IntEnum
:EXIF
-кодов в виде словарей:EXIF
-кодов в виде классов enum.IntEnum
.ExifTags.Base
:>>> from PIL.ExifTags import Base >>> Base.ImageDescription.value # 270 >>> Base(270).name # 'ImageDescription'
ExifTags.GPS
:>>> from PIL.ExifTags import GPS >>> GPS.GPSDestLatitude.value # 20 >>> GPS(20).name # 'GPSDestLatitude'
ExifTags.Interop
:>>> from PIL.ExifTags import Interop >>> Interop.RelatedImageFileFormat.value # 4096 >>> Interop(4096).name # 'RelatedImageFileFormat'
ExifTags.IFD
:>>> from PIL.ExifTags import IFD >>> IFD.Exif.value # 34665 >>> IFD(34665).name # 'Exif
ExifTags.LightSource
:>>> from PIL.ExifTags import LightSource >>> LightSource.Unknown.value # 0 >>> LightSource(0).name # 'Unknown'
EXIF
-кодов в виде словарей.ExifTags.TAGS
:Словарь TAGS сопоставляет 16-битные целочисленные перечисления тегов EXIF с описательными строковыми именами.
Например:
>>> from PIL.ExifTags import TAGS >>> TAGS[0x010e] # 'ImageDescription'
ExifTags.GPSTAGS
:Словарь GPSTAGS сопоставляет 8-разрядные целочисленные перечисления EXIF GPS с описательными строковыми именами.
Например:
>>> from PIL.ExifTags import GPSTAGS >>> GPSTAGS[20] # 'GPSDestLatitude'