在我的图像处理软件周围,我使用exiftool成功地重排了Cr2,TIFF和JPG文件中的exif信息。添加的标签(例如“关键字”)都可以在OSX(山狮)Finder,Preview中看到,并可以由Spotlight很好地索引。
对于PNG,我需要回退到XMP,因为这是PNG的元数据容器。但是,添加了exiftool的标签似乎没有被Preview或SpotLight拾取。相反,如果我先在Preview中添加标签,然后再使用exiftool添加新标签,则该索引已被索引。我在XMP原始数据中看到的是这里的区别,其中exiftool新创建了一个 header ,而Preview没有。
作为示例,请在不带元数据https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png的PNG上的Wikipedia页面上查看以下PNG:
使用exiftool添加关键字,然后转储XMP数据块:
exiftool -xmp-dc:subject=ViaExifSubject ./PNG_transparency_demonstration_1.png
exiftool -xmp -b ./PNG_transparency_demonstration_1.png
提供以下XMP数据:
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 9.02'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<rdf:Description rdf:about=''
xmlns:dc='http://purl.org/dc/elements/1.1/'>
<dc:subject>
<rdf:Bag>
<rdf:li>ViaExifSubject</rdf:li>
</rdf:Bag>
</dc:subject>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='r'?>
但是,在“预览”或Finder信息面板中,找不到“ViaExifSubject”。
或者,使用OSX预览添加注释(在“预览”中打开,显示检查器,转到“关键字”选项卡,单击“+”添加关键字)。 XMP通过exiftool再次转储:
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.1.2">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:subject>
<rdf:Bag>
<rdf:li>viaPreview</rdf:li>
</rdf:Bag>
</dc:subject>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
预览生成的关键字中不存在
xpacket
header ,并且XMP Toolkit是不同的。现在可以看到“viaPreview”标签,例如在CLI上使用mdls
。将原始XMP信息推送到一个干净的文件中也不会产生预期的结果:
exiftool "-xmp<=viaexif.xmp" PNG_transparency_demonstration_1.png
出乎意料的是,如果我首先使用Preview创建一个标签,然后执行上面的命令,则新标签会反射(reflect)出来,我怀疑我正在监督一个需要“激活”的外部数据解析器,拾取该标签并将其放在另一个标签中。存储(例如.DS_store)。我还没有看到任何添加的xattr。
这些是我的问题:
我在磁盘上挖了xmp_sdk并尝试了提供的示例:
ModifyXMP可以将“纯” XMP信息写入PNG,这在OSX Finder中显示-这是一个很好的目标。
尽管OSX Finder中未显示此信息,但ReadingXMP可以读取ExifTool插入到PNG中的XMP信息。
在查看ModifyXMP的输出并插入完全相同的XMP Blob的exiftool时,文件大小相似。差异显示exiftool附加在文件的末尾,XMP sdk将其放在PNG的 header 中。 XMP spec指出“鼓励编码器将块放置在文件的开头,但这不是必需的。”
结论:exiftool编写XMP的方式存在(轻微)差异,这特别与OSX的元数据检索混为一谈。
目前:
最后,Phil Harvey决定在Exiftool本身中解决此问题:
最佳答案
从您的观察看来,
exiftool
无法协调IPTC和XMP。您可以尝试在PNG中尝试同时更改IPTC和XMP,然后查看它是否可搜索。关于macos - Exiftool在PNG图像中创建OSX可见XMP元数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19154596/