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

Около моя софтуер за обработка на изображения използвам 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:

Примерен 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 затвори моя бъг, заявявайки, че няма да предприемат никакви действия по тази тема


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