libjpeg のjpeg_read_scanlines
動作について混乱しています。JPEGを行ごとに解凍し、解凍されたピクセルバッファを作成することは私の理解です。
典型的な使用法は次のようなものです。
jpeg_decompress_struct cinfo;
...
unsigned char* image = new unsigned char[cinfo.image_width * cinfo.image_height];
unsigned char* ptr = image;
int row_stride = cinfo.image_width;
while (cinfo.output_scanline < cinfo.image_height)
{
jpeg_read_scanlines(&cinfo, &ptr, 1);
ptr += row_stride;
}
質問:出力バッファ サイズについて混乱しています。を使用しているすべてのサンプル コードjpeg_read_scanlines
で、出力バッファのサイズは ですwidth X height
。ここで、幅と高さは JPEG ファイルのサイズを表します。したがって、10x10 の JPEG ファイルの場合、100 バイトの出力バッファがあります。
でも・・・RGBの各ピクセルのサイズが3バイト(24bit)じゃないですか?width X height X 3
では、圧縮されていないデータは実際にはバイト であるべきではありませんか?
なぜそうではないのですか?
jpeg_write_scanlines
を使用するコードでは、圧縮されるバッファがIS であることに気付きましたwidth X height X 3
。では、なぜバッファjpeg_read_scanlines
のみで使用されるのwidth X height
でしょうか?