3

libjpeg では、出力イメージをスケーリングするルーチンが許可されていますか?

入力で幅1、高さ1を提供し、出力で幅2、高さ2を取得するときに、保存および読み込み時にサイズを変更する必要がある画像があり、外部では何も使用できません。

4

2 に答える 2

14

はい、libjpegは画像スケーリングをサポートしていますが、いくつかの制限があります。

Libjpegバージョン8c以降は、Mが1〜16の整数であるM / 8スケーリングをサポートします。より一般的に使用されるlibjpegバージョン6bは、1、2、4、および8のMのみをサポートします(つまり、2の累乗のダウンスケーリング)。

scale_numとscale_denomを使用して、スケーリング分子と分母を解凍オブジェクトに指定します。jpeglib.hのjpeg_decompress_structを参照してください。使用例については、djpeg.cを参照してください。

これは、画像全体をデコードしてからダウンスケーリングするよりもはるかに高速で、潜在的に高品質です。

于 2012-03-26T20:00:57.020 に答える
1

いいえ、自分でスケーリングする必要があります(線形補間は最も簡単で最速ですが、正方形のピクセルが得られます。双一次/三一次/双一次はトリッキーですが、よりスムーズな結果が得られます)、または汚い作業を行うライブラリを使用します(OpenCV、SDL、imagemagick、libpipiなどを確認してください)

これについての詳細はここここ

単純な最近隣内挿法の実際のコード(最適化されていない):

dest[dx+dy*dest_width] = src[(dx*src_width/dest_width)+(dy*src_height/dest_height)*src_width]

dest_widthとdest_heightに従ってdxとdyを繰り返すだけです。しかし、実際には、これにはライブラリを使用してください。

于 2011-11-06T10:31:30.233 に答える