Je le code suivant:Bitmap est considérée comme immuable lorsque intitulant getPixels()
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());
Un IllegalStateException
est jeté dans la méthode eraseColor
avec le message ne peut pas effacer les bitmaps immuables quand rotatedBitmap.getPixels
est appelé. De toute évidence, les deux mutableBitmap
et rotatedBitmap
sont bitmaps mutable, c'est pourquoi ils existent, et le débogueur le confirme également. Pour être complet, INPUT_SIZE
est la largeur de l'écran et result
est un objet PhotoResult
de FotoApparat
.
Alors, pourquoi cette exception est-elle levée?
Mais si c'est le cas: Pourquoi le débogueur me dirait-il que 'mIsMutable' est vrai pour' rotatedBitmap'? Pourquoi cela n'a-t-il pas fonctionné lorsque je l'ai essayé dans l'autre sens, par exemple: 'Bitmap rotatedBitmap = Bitmap.createBitmap (result.bitmap, 0, 0, result.bitmap.getWidth(), result.bitmap.getHeight(), matrice, vrai); ' ' Bitmap mutableBitmap = rotationBitmap.copy (Bitmap.Config.ARGB_8888, true); ' – thedjdoorn