Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 调整getPixels()时,位图被视为不可变_Android_Image_Bitmap - Fatal编程技术网

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)