将不可变的位图文件转换为可变的位图

Ale*_*lex 17 android bitmap mutable immutability

A:

 Bitmap immutableBmp= BitmapFactory.decodeResource(getApplicationContext().getResources(),R.drawable.sample);
 mutableBitmap=immutableBmp.copy(Bitmap.Config.ARGB_8888, true);
Run Code Online (Sandbox Code Playgroud)

B:

Bitmap immutableBmp= BitmapFactory.decodeFile(filePath);
mutableBitmap=immutableBmp.copy(Bitmap.Config.ARGB_8888, true);
Run Code Online (Sandbox Code Playgroud)

C:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inMutable=true;
myBitmap=BitmapFactory.decodeFile(filePath,options);
Run Code Online (Sandbox Code Playgroud)

A作品,但B和C不.我试图将不可变位图转换为可变位图.它适用于资源图像,但不适用于文件图像.有什么问题?

小智 7

发现这个:

Bitmap bmp_Copy = bmp_Base.copy(Bitmap.Config.ARGB_8888,true);
Run Code Online (Sandbox Code Playgroud)

  • 在 Stack Overflow 上添加一个关于为什么您的解决方案应该有效的解释是一个很好的做法。有关更多信息,请阅读 [如何回答](//stackoverflow.com/help/how-to-answer)。 (5认同)

Ale*_*lex 2

我已经找到问题了!上面的所有 3 种方法都有效,但我的图像分辨率有问题,所以我认为代码不起作用并且它不可变,但我错了。这是将不可变图像更改为可变图像的另一种解决方案。

BitmapFactory.decodeResource 在 Android 2.2 中返回可变 Bitmap,在 Android 1.6 中返回不可变 Bitmap