问题描述
我正在尝试将可绘制资源解码为如下所示的位图。
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = true;
int destinationDimension = 128;
options.outHeight = destinationDimension;
options.outWidth = destinationDimension;
bmp = BitmapFactory.decodeResource(context.getResources(),defaultimage,options);
Log.d(TAG,"height = " + bmp.getHeight() + " width = " + bmp.getWidth());
但不知何故解码后的位图尺寸为 1344x1344。
height = 1344 width = 1344
如何获得尺寸为 128x128 的位图。
解决方法
options.outHeight
用作 BitmapFactory.decodeResource
的输出。
您可以通过 options.out<...>
清楚地识别它们。所以在我们decodeResource这个Bitmap之后,得到的高度和宽度会被写入options.outHeight
和options.outWidth
那么,我们可以调整 decodeResource 中位图的大小吗?
是的,也不是。
我们可以使用 inSampleSize
调整大小。但是,这会将位图缩放 2^n。有关 inSampleSize 计算的详细信息,请参见此处:https://developer.android.com/topic/performance/graphics/load-bitmap
要将位图缩放到我们的目标宽度/高度,请使用 Bitmap.createScaledBitmap
。请参阅此处:How to resize image (Bitmap) to a given size?。