1

我正在尝试编写一个脚本,该脚本将遍历大量图像并根据某些标准编写新的 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有没有一种方法可以理想地使用,或者使用任何其他方法来实现我的结果?

4

1 回答 1

1

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

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

因此解决方案是使用modify_xmp()modify_iptc()更改两组标签。

于 2020-04-21T17:15:32.170 回答