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

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

MozJpegGUIの更新: メタデータコピーの方針

MozJpegGUI 1.3にメタデータコピー機能を追加するための方針について。

まず、MozJpegライブラリにメタデータ指定機能があるかどうかを調査した。・・・うーん、元jpegにあるメタデータをコピーできるのに、メタデータの外部指定機能がなさそう?

次に、画像変換後にWin32APIを使ってメタデータを書き込む方法を調査した。GDI+のImageやBitmapを使えばできるようだけど、困ったことに読み込みや保存に実ファイルが必要。しかも、読み込み元と保存先は別ファイルにする必要がある。ということは、保存が今まで1回だったのが、2回に増えてしまう。メモリ上に一時ファイル(tempファイル)を作成するなどの迂回策が必要そうだ。

最後に、MozJpegライブラリに手を加えることで対応できるか調査した。cjpeg.cの/* Copy metadata */以下にてメタデータ保存要否をマーカー毎に判断しているようだ。ということは、マーカーデータを必要に応じ生成してあげればいいのね。大変そうだけど。

以上をまとめると、以下な感じかな。

  • メタデータをGDI+等で読み取り、MozJpegの引数指定でメタデータを保存:そのような引数はなさそうなのでNG
  • メタデータをGDI+にて後処理で保存:ファイル保存回数が1増えるので、避けたい
  • MozJpegライブラリに、GDI+で読み取ったメタデータを保存する機能を追加する:できなくはないけど難易度高い?

3番目の案が処理一番早くなるけど・・・どうしようかな。以下、今後の調査のためのメモ。

JPEG メタデータ仕様

dev.exiv2.org

hp.vector.co.jp