Редактирование тегов xmp pyexiv2 modify_xmp неправильно заменяет теги xmp - PullRequest
1 голос
/ 19 апреля 2020

Я пытаюсь написать скрипт, который проведет oop через большое количество изображений и напишет новые теги xmp на основе определенных критериев.

Я использую pyexiv2 для чтения и изменения тега 'Xmp.dc.subject'.

Я могу назначить новый набор тегов для изображения и с помощью pyexiv2.read_xmp() проверить мои Результаты показывают, что новый набор тегов заменил старый набор тегов, как и ожидалось. Однако, когда я проверяю свойства в windows проводнике или другом менеджере фотографий, старые теги остаются в дополнение к новому набору тегов.

см. Мой код ниже

from pyexiv2 import Image

path=some_path
img=Image(path)
tags=img.read_xmp()
tags.get('Xmp.dc.subject')  ####outputs list of tags ['old_tag1', 'old_tag2', 'old_tag3']

newtags=['new_tag1','new_tag2']

dict1={'Xmp.dc.subject':newtags}
img.modify_xmp(dict1)
img.close()

Сейчас , когда я открываю свойства файла в Проводнике или проверяю в программном обеспечении менеджера фотографий, теги этого файла ['old_tag1', 'old_tag2', 'old_tag3','new_tag1','new_tag2']. Ожидаемое поведение, описанное в руководстве pyexiv2, заключается в том, что новый список тегов будет заменять старые теги.

Я пытался использовать py3exiv2, но у меня проблемы с эта библиотека из-за ошибки, ссылающейся на Microsoft Visual Studio. Есть ли способ достичь моего результата в идеале, используя pyexiv2, или в качестве альтернативы, используя любой другой метод?

1 Ответ

1 голос
/ 21 апреля 2020

Я нашел решение этой проблемы. Windows explorer (и Adbobe Bridge, и я предполагаю, что и другое программное обеспечение) отображает как теги xmp, так и теги ipt c.

Так что, если вы изменяете только теги xmp, проводник (или другое программное обеспечение) покажет новые теги xmp , а также старые теги ipt c.

Таким образом, решение заключается в использовании modify_xmp() и modify_iptc() для изменения обоих наборов тегов.

...