Independent JPEG Groupのjpeg ライブラリ v8d を使用していますが、jpeg 解凍によるデータの読み取りと処理の方法を変更したいと考えています。
djpegmain()
では、一度に 1 つのスキャンライン/行のみが読み取られ、各jpeg_read_scanlines()
呼び出しで処理されます。したがって、画像全体を読み取るには、すべての行が読み取られて処理されるまで、この関数が呼び出されます。
while (cinfo.output_scanline < cinfo.output_height) {
num_scanlines = jpeg_read_scanlines(&cinfo, dest_mgr->buffer,
dest_mgr->buffer_height); //read and process
(*dest_mgr->put_pixel_rows) (&cinfo, dest_mgr, num_scanlines); //write to file
}
しかし、画像全体を一度読み取ってメモリに保存し、メモリから画像全体を処理したいと思います。を読んlibjpeg.txt
で、これが可能であることがわかりました。
多少の進歩はあったものの、完全に機能させることはできませんでした。pub.buffer_height
値とpub.buffer
サイズを大きくすることで、一度に数行を読み取ることができるようになりましたが、どれだけ大きくpub.buffer_height
てpub.buffer
も、各jpeg_read_scanlines()
呼び出しで読み取られるのは数行だけです。これについて何か考えはありますか?