簡単な例:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = scale;
Bitmap bmp = BitmapFactory.decodeStream(is, null, opts);
scale
2 の累乗に等しくない値を渡すと、ビットマップは最も近い 2 の累乗値でスケーリングされます。たとえば、scale = 3
実際のスケールが2
何らかの理由で変わる場合。ハードウェア アクセラレーションを使用しているためでしょうか。
とにかく、完全なビットマップのメモリを割り当てずに、2 のべき乗以外の値でビットマップをスケーリングするにはどうすればよいですか?
PS 2 の累乗を使用する方がはるかに高速であることはわかっていますが、私の場合、時間はそれほど重要ではなく、提供されたスケールで正確にスケーリングされた画像が必要です(そうしないと、画像が大きすぎたり小さすぎたりします) - 画像処理を使用しています、したがって、大きな画像自体はそれほど問題ではありません(ImageView
必要なサイズにスケーリングします)が、たとえばフィルターを適用するには余分な時間がかかります。