pyexiv2 пропущенные типы значений для тегов XMP - PullRequest
0 голосов
/ 03 января 2019

Я извлекаю все теги EXIF ​​и XMP из изображений tif, используя следующий код, который использует pyexiv2:

import pyexiv2

image = r'image.tif'

meta = pyexiv2.ImageMetadata(image)
meta.read()

# print all exif tags in file
for m in meta.exif_keys:
    print(m + " = " + str(meta[m]))
print "\n"
# print all xmp tags in file
for m in meta.xmp_keys:
    print(m + " = " + str(meta[m]))

# look for an individual tag and value
if 'Xmp.Camera.BandSensitivity' in meta.xmp_keys: 
    sense = meta['Xmp.Camera.BandSensitivity'].value # append value to list
    print "The band sensitivity is: ", sense

Код выполняется, но я не получаю никакой информации о типе значения XMP. Например, для EXIF ​​некоторые типы значений включают в себя: [Ascii], [Long], [Rational]. И это отражено в распечатке:

Exif.Photo.ExposureTime = <Exif.Photo.ExposureTime [SRational] = 5921/10000000>
Exif.Photo.FNumber = <Exif.Photo.FNumber [Rational] = 1800/1000>
Exif.Photo.DateTimeOriginal = <Exif.Photo.DateTimeOriginal [Ascii] = 2017:07:12 10:27:03>
Exif.Photo.FocalLength = <Exif.Photo.FocalLength [Rational] = 3600/1000>
Exif.Photo.SubSecTimeOriginal = <Exif.Photo.SubSecTimeOriginal [Ascii] = 396473888>
Exif.Photo.PixelXDimension = <Exif.Photo.PixelXDimension [Short] = 1280>
Exif.Photo.PixelYDimension = <Exif.Photo.PixelYDimension [Short] = 960>

Но для тегов XMP я не получаю никакой информации о типе значения:

Xmp.Camera.CalibrationTargetName = <Xmp.Camera.CalibrationTargetName [] = Mire 3>
Xmp.Camera.CalibrationPicture = <Xmp.Camera.CalibrationPicture [] = 0>
Xmp.Camera.Yaw = <Xmp.Camera.Yaw [] = -95.772>
Xmp.Camera.Pitch = <Xmp.Camera.Pitch [] = 9.17662>
Xmp.Camera.Roll = <Xmp.Camera.Roll [] = -8.29878>
Xmp.Camera.GPSXYAccuracy = <Xmp.Camera.GPSXYAccuracy [] = 139200/100000>
Xmp.Camera.GPSZAccuracy = <Xmp.Camera.GPSZAccuracy [] = 149600/100000>

Я могу преодолеть эту проблему, преобразовав значение XMP в строку и используя string.strip() для извлечения числового значения. Однако это не идеально и может привести к ошибке, если формат строки изменяется.

Вопрос: кто-нибудь сталкивался с этой проблемой раньше с тегами XMP от pyexiv2? Есть ли способ включить информацию о типе значения в теги XMP, как в случае с тегами EXIF ​​здесь?

ПРИМЕЧАНИЕ. Я пробовал это с несколькими TIFF-изображениями, и у меня все еще возникает та же проблема. Используя версию 0.3.2 pyexiv2. Кроме того, .raw_value дает те же проблемы, что и .value (как используется в приведенном выше коде.

...