简单的例子:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = scale;
Bitmap bmp = BitmapFactory.decodeStream(is, null, opts);
当我传递scale
的值不等于 2 的幂时,位图仍按最接近的 2 值的幂进行缩放。例如,如果由于某种原因,scale = 3
实际比例变为。2
也许是因为我正在使用硬件加速?
无论如何,如何在不为完整位图分配内存的情况下通过非 2 次方值缩放位图?
PS我知道,使用二的幂要快得多,但在我的情况下,时间并不是那么重要,我需要按提供的比例精确缩放图像(否则它变得太大或太小) - 我正在使用图像处理,所以大图像本身不是这样的问题(ImageView
将其缩放到所需的大小),但是例如应用一些过滤器需要额外的时间。