Python: чтение данных xmp из файлов png - PullRequest
0 голосов
/ 20 февраля 2019

У меня следующая проблема.Я открываю PNG изображения с PIL Image.open().Есть ли возможность прочитать данные xmp после открытия изображения?Я не хочу открывать изображение дважды, как я делаю это сейчас с Image.open(path) и библиотекой libxmp, в которой также открывается изображение для чтения данных xmp (xmp = file_to_dict(path)).

1 Ответ

0 голосов
/ 20 февраля 2019

Если вы используете 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()]

И тогда вы можете проверить это, как это делается, например, здесь :

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)
...