在Python中读取图像XMP数据

20 投票
9 回答
21576 浏览
提问于 2025-04-16 22:15

我可以像在这个例子中那样使用PIL吗?

我只需要读取数据,想找一种最简单的方法来做到这一点(我不能安装pyexiv)

编辑:我不想相信,做这件事的唯一方法就是用一些需要Exempi和Boost的库(比如python-xmp-toolkitpyexiv2,等等)。一定还有其他选择!

9 个回答

3

我也想知道有没有一种“合适”的简单方法来做到这一点。

与此同时,我用纯Python实现了读取XMP数据包的功能,代码在PyAVM里。相关的代码可以在这里找到。也许这对你有帮助?

11

XMP元数据可以在 applist 中找到。

from PIL import Image
with Image.open(filename) as im:
    for segment, content in im.applist:
        marker, body = content.split('\x00', 1)
        if segment == 'APP1' and marker == 'http://ns.adobe.com/xap/1.0/':
            # parse the XML string with any method you like
            print body
15

我在找类似的东西时,碰巧看到了一个关于PHP的相关问题,然后我把答案翻译成了Python:

f = 'example.jpg'
fd = open(f)
d= fd.read()
xmp_start = d.find('<x:xmpmeta')
xmp_end = d.find('</x:xmpmeta')
xmp_str = d[xmp_start:xmp_end+12]
print(xmp_str)

接下来,你可以把xmp_str转换一下,然后用XML的工具来解析它。

撰写回答