Exiftool для создания видимых метаданных XMP OSX в изображениях PNG

В моем программном обеспечении для обработки изображений я использую 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:

Пример 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 закрыла мою ошибку, заявив, что не будет предпринимать никаких действий по этой теме


person Community    schedule 03.10.2013    source источник


Ответы (2)


  1. Вы пробуете XMP Toolkit SDK и его образцы и записываете метаданные для PNG.
  2. OSX использует IPTC (не уверен, читал где-то), а инструментарий XMP согласовывает XMP и IPTC, поэтому ключевое слово, добавленное с помощью XMP Toolkit, будет доступно для поиска в OS X.

Судя по вашему наблюдению, exiftool не согласовывает IPTC и XMP. Вы можете попробовать изменить как IPTC, так и XMP внутри PNG и посмотреть, доступен ли он для поиска.

person indersr    schedule 07.10.2013
comment
Я отредактировал сообщение, чтобы включить поведение XMP sdk. Я не думаю, что здесь нужен IPTC (напрямую не поддерживается в PNG). - person gdh; 22.10.2013
comment
Я отдаю вам должное за переход по маршруту XMP SDK, который инициировал определение порядка пакетов XMP в PNG - посмотрим, чем это закончится. - person gdh; 24.10.2013

Preview.app теперь отлично работает с

exiftool -xmp-dc:subject=ViaExifSubject 
person Community    schedule 21.02.2020