私の画像処理ソフトウェアでは、exiftool を使用して、Cr2、TIFF、JPG ファイルからの exif 情報をうまくシャッフルしています。「キーワード」などの追加されたタグはすべて、OSX (マウンテン ライオン) Finder、プレビューで表示され、Spotlight によって適切にインデックス化されます。
PNG の場合、これは PNG のメタデータ コンテナーであるため、XMP にフォールバックする必要があります。ただし、exiftool で追加されたタグは、Preview にも SpotLight にも反映されないようです。対照的に、最初にプレビューでタグを追加し、exiftool を使用して後で新しいタグを追加すると、これはインデックス化されます。ここでの違いは、exiftool が新たにヘッダーを作成する XMP 生データで見られますが、Preview はそうではありません。
例として、メタデータなしの PNG の Wikipedia ページから次の 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>
Preview で生成されたxpacket
キーワードにヘッダーが存在せず、XMP Toolkit が異なります。「viaPreview」タグが表示されるようになりmdls
ました (例: CLI で使用)。
生の XMP 情報をクリーンなファイルにプッシュしても、期待どおりの結果が得られません。
exiftool "-xmp<=viaexif.xmp" PNG_transparency_demonstration_1.png
驚くべきことに、最初にプレビューを使用してタグを作成し、その後上記のコマンドを実行すると、新しいタグが反映されます。「アクティブ化」する必要がある外部データ パーサーを監督していると思われ、タグを取得して別の場所に配置します。ストア (例: .DS_store)。xattr が追加されているのを見たことがありません。
これらは私の質問です:
- exiftool は XMP/PNG の組み合わせに適したツールですか? 特定の機能が不足していますか?
- OSX は XMP 標準に逆らいますか? 編集:明らかにXMPはデフォルトでOSXによって尊重されていません
- コンテナを削除する代替ツールで調査する必要がありますか?
ディスク上の xmp_sdk を掘り起こし、提供されたサンプルを試してみました。
ModifyXMP は、OSX Finder に表示される「純粋な」XMP 情報を PNG に書き込むことができます。これは良いターゲットです。
ReadingXMP は、ExifTool によって PNG に挿入された XMP 情報を読み取ることができますが、この情報は OSX Finder には表示されません。
ファイル サイズは、ModifyXMP の出力とまったく同じ XMP BLOB を挿入する exiftool を参照すると似ています。XMP sdk がそれを PNG のヘッダーに配置するファイルの末尾に、exiftool が追加されることを diff が示しています。XMP 仕様では、 「エンコーダーはファイルの先頭にチャンクを配置することをお勧めしますが、これは必須ではありません」と述べています。
結論: exiftool が XMP を書き込む方法には (わずかな) 違いがあり、これは特に OSX のメタデータの取得を混乱させます。
今のところ:
- 代わりに XMP SDK を試して、最初にクリーンな XMP パケットを挿入し、exiftool でこの最初のチャンクを再利用します。
私は exiftools のフォーラムに再投稿し、著者の Phil Harvey は次のように返信しました。
Apple Preview をいじってみましたが、ファイルの末尾にある XMP を認識しないだけでなく、画像にキーワードを追加すると、この XMP も削除されます。私の推測では、XMP が IDAT チャンクの後にある場合、Apple ソフトウェアは XMP を無視します。XMP 仕様で XMP チャンクが IDAT の前に来るように義務付けられていれば素晴らしいことでしたが、そうではなかったため、これは Apple ソフトウェアのバグと見なす必要があります。これを既知の問題のリストに追加しました。
最後に、Phil Harvey は Exiftool 自体でこの問題を修正することにしました。
私はこれについて多くの作業を行ってきました。Exiftool 9.40には、PNG IDAT チャンクの前に XMP を書き込むことができる新しいオプションがあります。対応するコマンドは次のようになります。
exiftool -api PNGEarlyXMP
...Apple にバグを報告 -- 2014 年 12 月の更新: Apple は私のバグをクローズし、このトピックについて何の措置も取らないと述べました