Python:从png文件中读取xmp数据

时间:2019-02-20 12:00:10

标签: python image png python-imaging-library xmp

我有以下问题。我使用PIL Image.open()打开png图像。打开图像后可以读取xmp数据吗?我不想打开图像两次,就像我现在使用Image.open(path)和libxmp库一样,其中也同时打开图像以读取xmp数据(xmp = file_to_dict(path))。

1 个答案:

答案 0 :(得分:1)

如果您使用PIL的Image.open(),则它在text属性中(以及info属性中,该属性包含text属性的内容以及诸如分辨率之类的更多内容)。 ...这是一个命令。在我查看的图像中,它只有一个条目,键为XML:com.adobe.xmp,用于保存xmp数据。

因此,您可能需要执行以下操作:

from PIL import Image
import xml.etree.ElementTree as ET
im = Image.open(/path/tho/image.png)    # replace with correct path
trees = [ET.fromstring(im.text[key]) for key in im.text.keys()]

然后您可以检查它,类似于它的完成方式,例如here

for tree in trees:
    nmspdict = {'x':'adobe:ns:meta/',            
            'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
            'dc': 'http://purl.org/dc/elements/1.1/'}
    tags = tree.findall('rdf:RDF/rdf:Description/dc:subject/rdf:Bag/rdf:li',
                    namespaces = nmspdict)
    tag_contents = [tag.text for tag in tags]
    print(tag_contents)