Android 调整getPixels()时,位图被视为不可变
我有以下代码:Android 调整getPixels()时,位图被视为不可变,android,image,bitmap,Android,Image,Bitmap,我有以下代码: Bitmap mutableBitmap = result.bitmap.copy(Bitmap.Config.ARGB_8888, true); Matrix matrix = new Matrix(); matrix.postRotate(-result.rotationDegrees); Bitmap rotatedBitmap = Bitmap.createBitmap(mutableBitmap, 0, 0, mutableBitmap.getWidth(), muta
Bitmap mutableBitmap = result.bitmap.copy(Bitmap.Config.ARGB_8888, true);
Matrix matrix = new Matrix();
matrix.postRotate(-result.rotationDegrees);
Bitmap rotatedBitmap = Bitmap.createBitmap(mutableBitmap, 0, 0, mutableBitmap.getWidth(), mutableBitmap.getHeight(), matrix, true);
int[] intValues = new int[INPUT_SIZE*INPUT_SIZE];
rotatedBitmap.getPixels(intValues, 0, rotatedBitmap.getWidth(), 0, 0, rotatedBitmap.getWidth(), rotatedBitmap.getHeight());
调用rotatedBitmap.getPixels
时,在eraseColor
方法中抛出IllegalStateException
,并显示消息无法擦除不可变位图。显然,mutableBitmap
和rotatedBitmap
都是可变位图,这就是它们存在的原因,调试器也确认了这一点。为完整起见,INPUT\u SIZE
是屏幕宽度,result
是来自FotoApparat
的PhotoResult
对象
那么为什么会引发此异常?我认为您的特定
createBitmap
方法不会创建可变位图:
“从源位图的子集返回一个不可变位图,通过可选矩阵进行转换。”我认为您特定的
createBitmap
方法不会创建可变位图:
“从源位图的子集返回一个不可变的位图,通过可选矩阵进行转换。”但如果是这样的话:为什么调试器会告诉我
rotatedBitmap
的mIsMutable
为真?为什么当我以另一种方式尝试时它也不起作用,比如:Bitmap rotatedBitmap=Bitmap.createBitmap(result.Bitmap,0,0,result.Bitmap.getWidth(),result.Bitmap.getHeight(),matrix,true)代码>Bitmap mutableBitmap=rotatedBitmap.copy(Bitmap.Config.ARGB_8888,true)代码>但如果是这样的话:为什么调试器会告诉我旋转位图的mIsMutable
为真?为什么当我以另一种方式尝试时它也不起作用,比如:Bitmap rotatedBitmap=Bitmap.createBitmap(result.Bitmap,0,0,result.Bitmap.getWidth(),result.Bitmap.getHeight(),matrix,true)代码>Bitmap mutableBitmap=rotatedBitmap.copy(Bitmap.Config.ARGB_8888,true)代码>