В моем программном обеспечении для обработки изображений я использую exiftool для успешного перетасовки информации exif из файлов Cr2, TIFF, JPG. Все добавленные теги, такие как «ключевые слова», видны в Finder, Preview OSX (горный лев) и хорошо проиндексированы Spotlight.
Для PNG мне нужно вернуться к XMP, поскольку это контейнер метаданных для PNG. Однако теги, добавленные exiftool, не воспринимаются ни Preview, ни SpotLight. Напротив, если я сначала добавлю тег в Preview и использую 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'?>
Однако на информационной панели предварительного просмотра или 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
отсутствует в ключевом слове, сгенерированном предварительным просмотром, и XMP Toolkit отличается. Тег viaPreview теперь виден, например используя mdls
в интерфейсе командной строки.
Помещение необработанной информации 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 закрыла мою ошибку, заявив, что не будет предпринимать никаких действий по этой теме