我有以下代码:
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());
调用IllegalStateException
时,eraseColor
方法中会抛出rotatedBitmap.getPixels
,并且消息无法删除不可变位图。显然,mutableBitmap
和rotatedBitmap
都是可变位图,这就是它们存在的原因,调试器也证实了这一点。为了完整起见,INPUT_SIZE
是屏幕宽度,result
是来自PhotoResult
的{{1}}对象。
那为什么抛出这个异常?
答案 0 :(得分:2)
我认为您的特定createBitmap
方法不会创建可变位图:
"从源位图的子集返回一个不可变的位图,由可选矩阵转换。"