如何在 decodeResource 中获取调整大小的位图

问题描述

我正在尝试将可绘制资源解码为如下所示的位图。

        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.outHeightoptions.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?