gpt4 book ai didi

java - 安卓、Java : Resized Bitmap ignores bitmap options

转载 作者:太空狗 更新时间:2023-10-29 14:22:41 26 4
gpt4 key购买 nike

我正在使用 Java 创建这款 Android 游戏。但是,我加载位图,然后调整它们的大小以适合屏幕等(dpi 不是很准确)。但我的想法也是为具有少量 ram 的设备加载 16b (mBitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_4444) 中的位图。但是当我调整位图大小时,它们似乎回到了 32b (Bitmap.Config.ARGB_8888)。

这是我声明选项的方式:

    mBitmapOptions = new BitmapFactory.Options();
mBitmapOptions.inPreferredConfig = Bitmap.Config.ARGB_4444;

这是我加载位图的方式:

    mBitmaps.add(getResizedBitmap(BitmapFactory.decodeResource(mResources, imagePath, mBitmapOptions)));

这是 getResizeBitmap 方法:

    public Bitmap getResizedBitmap(Bitmap bm) 
{
//Original size
int width = bm.getWidth();
int height = bm.getHeight();

//New size (percent)
float newWidth = 1 * mScaleWidth;
float newHeight = 1 * mScaleHeight;

//Create the matrix
Matrix matrix = new Matrix();
matrix.postScale(newWidth, newHeight);

//Recreate the new Bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);

//Recycle the old Bitmap
bm.recycle();

return resizedBitmap;
}

知道为什么新位图会忽略这些选项吗?

最佳答案

你为什么不使用 createScaledBitmap方法?它应该保留选项。在您的情况下,您正在创建一个全新的位图,它可能应用默认配置。

编辑:另一种选择是使用您的代码并添加对 copy 的调用像这样的方法:

Bitmap smallerBitmap = resizedBitmap.copy (Bitmap.Config.ARGB_4444, false);
resizedBitmap.recycle ();

但是,我认为这不会有很好的表现......

关于java - 安卓、Java : Resized Bitmap ignores bitmap options,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15293614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com