ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

MozJpegGUIの更新: そもそもPNGとJPGでメタデータの互換性がない!?

githubのissueに、メタデータのコピーに失敗するPNGのサンプルがアップロードされた。

github.com

そこで、さっそく解析ソフトを作って、どんなメタデータがコピーできていないのかを調べてみた。そして絶望した。

PNGにおいて、画像を含む各種データはチャンクに格納される。各チャンクの種別はChunk Typeを読むことでわかる(PNGのファイルフォーマットは下記公式仕様を参照した)。

http://www.libpng.org/pub/png/spec/1.2/PNG-Structure.html

そして、今回issueとして上がっていた「画像変換時にメタデータをコピーしたい」において、コピーを希望されていたのはtEXtチャンク内に保存されたテキストだった。tEXtチャンクには「キーワード」(任意の79文字以下)と「テキスト」(任意文字数)のペアを1つ保存することができ、今回のissueのサンプルではキーワード:「prompt」「workflow」の2つのチャンクが存在し、それぞれに長大なテキストが存在した。

これをJPGにコピーするには、同様のテキスト保存機能か、そのキーワードに相当するタグが必要だ。しかし、JPGの仕様書をいくら見ても任意のテキストキーワードを保存する機能は無い。また、AIのpromptやworkflowに対応するようなタグも当然無い。すなわち、当該メタデータPNGからJPGにコピーすることはできない。

どうしたものか。コメントセグメントにでも保存するか?