githubのissueに、メタデータのコピーに失敗するPNGのサンプルがアップロードされた。
そこで、さっそく解析ソフトを作って、どんなメタデータがコピーできていないのかを調べてみた。そして絶望した。
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にコピーすることはできない。
どうしたものか。コメントセグメントにでも保存するか?