に基づくJPEG画像解凍の次の標準コードがありlibjpeg
ます。
jpeg_decompress_struct cinfo;
// ...Set error manager and data source...
jpeg_read_header(&cinfo, TRUE);
jpeg_start_decompress(&cinfo);
while (cinfo.output_scanline < cinfo.output_height) {
JSAMPLE* scanlines[1];
// ...Set target pointer for scanline...
jpeg_read_scanlines(&cinfo, scanlines, 1);
}
jpeg_destroy_decompress(&cinfo);
長方形でトリミングされた画像の一部を読みたい:
// struct RECT {
// int left;
// int top;
// int right;
// int bottom;
// };
RECT cropRect; // Coordinates of the crop rectangle relative to the output image size
libjpeg
画像をすぐにトリミングするように指示するには、以下のコードで何を変更する必要がありますか?
これが私がそれを実装する方法です:
top - 1
最初の行を無視します。- 次の各行について
bottom - top
:1)スキャンラインを一時バッファに読み取ります。[left, right)
2)一時バッファからターゲットバッファに列範囲からピクセルをコピーします。 - 減圧を中止します。
しかし、このコードは冗長です。