在我的图像处理软件周围,我使用exiftool成功地从Cr2,TIFF,JPG文件中删除exif信息。添加的标签,例如“关键字”,在OSX(山狮)Finder,预览中都可见,并且被Spotlight很好地编入索引。
对于PNG,我需要回退到XMP,因为这是PNG的元数据容器。但是,预览和SpotLight似乎都没有选择使用exiftool的标签。相反,如果我首先在预览中添加标签并使用exiftool稍后添加新标签,则此IS已编入索引。我在这里看到的差异在XMP原始数据中,exiftool新创建了一个标题,而预览则没有。
例如,请查看PNG上维基百科页面中的以下PNG,不带元数据https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.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'?>
但是,在“预览”或“查找器”信息面板中,未找到“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
标头,XMP工具包不同。 “viaPreview”标签现在可见,例如在CLI上使用mdls
。
将原始XMP信息推送到 clean 文件中也不会产生预期结果:
exiftool "-xmp<=viaexif.xmp" PNG_transparency_demonstration_1.png
令人惊讶的是,如果我首先使用Preview创建一个标签,然后执行上面的命令,那么新的标签就会被反映出来我怀疑我正在监督需要“激活”的外部数据解析器,拿起标签并将它们放在不同的商店(例如.DS_store)。我还没有看到任何添加的xattr。
这是我的问题:
我在磁盘上挖出了我的xmp_sdk并尝试了提供的示例:
ModifyXMP可以将“纯”XMP信息写入到OSG Finder中显示的PNG中 - 这是一个很好的目标。
ReadingXMP可以将ExifTool插入的XMP信息读入PNG,但OSX Finder中未显示此信息。
当查看ModifyXMP的输出和exiftool插入完全相同的XMP blob时,文件大小相似。差异显示exiftool附加在文件末尾,XMP sdk将其放在PNG的标题中。 XMP spec表示“鼓励编码器将块放在文件的开头,但这不是必需的。”
结论:exiftool如何编写XMP存在(轻微)差异,这尤其与OSXs元数据检索有关。
目前:
我reposted on exiftools' forum,作者Phil Harvey回复道:
我做了一些Apple Preview游戏,它不仅在文件末尾不识别XMP,而且在向图像添加关键字时删除了这个XMP。我的猜测是,如果它出现在IDAT块之后,Apple软件会忽略XMP。如果XMP规范强制要求在IDAT之前使用XMP块,那将是非常好的,但它没有,所以这必须被认为是Apple软件中的一个错误。我已将此添加到list of Known problems。
最后,Phil Harvey决定在Exiftool中解决这个问题:
我已经做了很多工作, Exiftool 9.40 将有一个新选项,允许您在PNG IDAT块之前编写XMP。相应的命令如下所示:
exiftool -api PNGEarlyXMP
...
提起Apple的一个错误 - 2014年12月更新:Apple关闭了我的错误,声明他们不会对此主题采取任何行动
答案 0 :(得分:0)
根据您的观察,exiftool
似乎无法协调IPTC和XMP。您可以尝试尝试在PNG中更改IPTC和XMP,看看它是否可搜索。
答案 1 :(得分:0)
Preview.app 现在可以与
一起使用exiftool -xmp-dc:subject=ViaExifSubject