Около моя софтуер за обработка на изображения използвам exiftool за успешно разбъркване на exif информация от Cr2, TIFF, JPG файлове. Всички добавени тагове, като „ключови думи“, са видими в OSX (планински лъв) Finder, Preview и добре индексирани от Spotlight.
За PNG трябва да се върна към XMP, тъй като това е контейнерът за метаданни за PNG. Обаче добавените от exiftool маркери не изглежда да се улавят нито от Preview, нито от SpotLight. За разлика от това, ако първо добавя таг в Preview и използвам exiftool, за да добавя нов таг по-късно, това Е индексирано. Разликата тук виждам тук в необработените XMP данни, където exiftool създава ново заглавие, докато Preview не.
Като пример вижте следния 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'?>
Обаче в информационния панел на Preview или Finder не е намерен „ViaExifSubject“.
Като алтернатива можете да използвате OSX Preview за добавяне на коментари (Отворете в Preview, Show Inspector, отидете в раздела Keywords, щракнете върху „+“, за да добавите ключова дума). 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
не присъства в генерираната от Preview ключова дума, а XMP Toolkit е различен. Етикетът „viaPreview“ вече е видим, напр. използвайки mdls
на CLI.
Избутването на необработена XMP информация в чист файл също не дава очаквания резултат:
exiftool "-xmp<=viaexif.xmp" PNG_transparency_demonstration_1.png
Изненадващо, ако първо създам маркер с помощта на Preview и СЛЕД това изпълня командата по-горе, новите тагове се отразяват Подозирам, че наблюдавам външен анализатор на данни, който трябва да бъде „активиран“, взима тагове и ги поставя в различен магазин (напр. .DS_store). Не съм виждал да се добавя xattr.
Това са въпросите ми:
- Дали exiftool е правилният инструмент за комбинация от XMP/PNG и пропускам ли конкретна функция
- Опровергава ли OSX XMP стандарт? Редактиране: очевидно XMP не се зачита от OSX по подразбиране
- Трябва ли да проуча в алтернативен инструмент за отстраняване на контейнера?
Изрових моя xmp_sdk на моя диск и експериментирах с предоставените проби:
ModifyXMP може да записва "чиста" XMP информация в PNG, която се показва в OSX Finder - това е добра цел.
ReadingXMP може да чете XMP информация, вмъкната от ExifTool в PNG, въпреки че тази информация не се показва в OSX Finder.
Размерът на файла е подобен, когато гледате изхода на ModifyXMP и exiftool, вмъкващ точно същия XMP петно. Разликата показва, че exiftool добавя в края на файла, където XMP sdk го поставя в заглавката на PNG. В XMP спецификация се посочва, че "Кодери се насърчават да поставят парчето в началото на файла, но това не е задължително."
Заключение: Има (лека) разлика в начина, по който exiftool записва XMP и това конкретно пречи на извличането на метаданни от OSX.
За сега:
- Експериментирайте с XMP SDK вместо това, за да вмъкнете чист XMP пакет в началото и накарайте exiftool да използва повторно тази първа част.
- #P19#
#P20#
#P21##P22#
Подадох бъг в Apple -- Актуализация декември 2014 г.: Apple затвори моя бъг, заявявайки, че няма да предприемат никакви действия по тази тема