在Python中读取图像XMP数据
我可以像在这个例子中那样使用PIL吗?
我只需要读取数据,想找一种最简单的方法来做到这一点(我不能安装pyexiv)。
编辑:我不想相信,做这件事的唯一方法就是用一些需要Exempi和Boost的库(比如python-xmp-toolkit,pyexiv2,等等)。一定还有其他选择!
9 个回答
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的工具来解析它。