编辑 xmp 标签 pyexiv2 modify_xmp 不能正确替换 xmp 标签

Editing xmp tags pyexiv2 modify_xmp does not replace xmp tags correctly

我正在尝试编写一个脚本,该脚本将遍历大量图像并根据特定条件编写新的 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 或使用任何其他方法来理想地实现我的结果?

我找到了解决这个问题的方法。 Windows explorer(和 Adbobe Bridge,我猜还有其他软件)同时显示 xmp 标签和 iptc 标签。

因此,如果您只修改 xmp 标签,资源管理器(或其他软件)将显示新的 xmp 标签以及旧的 iptc 标签。

所以解决方案是使用modify_xmp()modify_iptc()来更改两组标签。