アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (1件)

pngの画像形式的に、それ以上は一般的には無理です。


画像データ本体はDeflate形式で圧縮されているため、デコードは先頭からやっていく必要があります。また、圧縮済みのデータから、圧縮前のnビット先のデータを探すことも(デコードしなければ)無理です。

画像自体の圧縮方法を工夫すれば、可能性は若干あるような気もしますが、そこまではしませんよね:
# 画像本体のデータ構造 IDAT を行ごとに作成する
# デコード時は行ごとに先頭からちょっとずつデコードする
# (一応png形式に違反していない)
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/07/25 06:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!