• ベストアンサー

png画像の縦一列を効率よく読み込むには

libpngを使用してpng画像をデコードしています。 png画像の最初のピクセルを一列読み込みたいのですが、libpngの1行単位のデコードだと結局全てデコードすることになると思います。 png画像のデコードはCPU負荷が高いので縦1列効率よくデコードしたいのですが何か全てデコードしない方法をご存じの方がいらっしゃればお教え下さい。 最悪 png_read_rows()を改造するとか、libpngを使用しないとか別の方法でも構いません。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

pngの画像形式的に、それ以上は一般的には無理です。 画像データ本体はDeflate形式で圧縮されているため、デコードは先頭からやっていく必要があります。また、圧縮済みのデータから、圧縮前のnビット先のデータを探すことも(デコードしなければ)無理です。 画像自体の圧縮方法を工夫すれば、可能性は若干あるような気もしますが、そこまではしませんよね: # 画像本体のデータ構造 IDAT を行ごとに作成する # デコード時は行ごとに先頭からちょっとずつデコードする # (一応png形式に違反していない)

chinchilla
質問者

お礼

詳細な回答をありがとうございました。 さすがに既存のpng(インタレスなどは対応しませんが)を対象にする必要がありますが、 専門的で貴重なご意見ありがとうございます。 大変助かります。 libpngの I/Fにはないようなので、後は自分で libpngを改造して多少でもデコード時間を削減できるかどうか、というところですね。 ありがとうございました。

関連するQ&A