首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将修改后的主题数据写入XMP文件失败(使用pyexiv2)

将修改后的主题数据写入XMP文件失败(使用pyexiv2)
EN

Stack Overflow用户
提问于 2014-01-30 20:28:38
回答 1查看 718关注 0票数 0

我的照片编辑搞砸了我的许多照片的标签。我认为这是开始熟悉Python并编写一个清除标记的脚本的最后一步。我发现pyexiv2可能会派上很大的用场,我试着基本上遵循教程(http://tilloy.net/dev/pyexiv2/tutorial.html)。

我想做的是:

  • 解析XMP文件中的原始数据(注意:我使用sidecar文件,而不是直接将元数据写入照片文件)。
  • 从Xmp.dc.subject读取原始标记(并将它们打印到标准输出以进行调试)
  • 将标记更改为新值(并用于调试,打印新值)
  • 将新数据写回XMP文件

在我检查编辑器中的XMP文件之前,一切看起来都很不错。改变后的价值根本就没有出现。但是,XMP文件将获得一个新的时间戳,如果我使XMP文件只读,就会得到一条错误消息。所以似乎有些东西会被写成文件。只是数据不对。

下面是一个显示我的问题的最小脚本:

代码语言:javascript
复制
import pyexiv2

key= 'Xmp.dc.subject'
metadata = pyexiv2.ImageMetadata('test.xmp')
metadata.read()

print metadata[key]
metadata[key] = ['NewTag']
print metadata[key]
metadata.write()

其产出是:

代码语言:javascript
复制
<Xmp.dc.subject [bag Text] = ['OldTag']>
<Xmp.dc.subject [bag Text] = ['NewTag']>
Script terminated.

但是XMP文件的相关部分仍然如下所示:

代码语言:javascript
复制
<dc:subject>
  <rdf:Bag>
    <rdf:li>OldTag</rdf:li>
  </rdf:Bag>
</dc:subject>

那么,要将修改后的元数据写入XMP文件,我必须做什么呢?

请注意,我是Python的完全初学者(但不是编程新手),所以这个问题可能是由一些我不知道的琐碎问题造成的。我正在Debian上运行Python2.7.6。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-01 11:26:07

关于pyexiv2.metadata.ImageMetadata的API文档说:

嵌入在图像中的所有元数据的容器。 它提供了使用Python类型对嵌入在JPEG和TIFF文件等图像文件中的EXIF、IPTC和XMP元数据进行操作的方便方法。它还提供对嵌入在图像中的预览的访问。

看起来,sidecar文件可能不支持写入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21466796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档