Je suis le chargement d'un bitmap d'une ressource comme ceci:Le chargement d'une ressource à un bitmap mutable
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image);
Ce que je veux faire est de faire quelques modifications à la bitmap avant qu'il ne soit tiré sur la toile principale dans mon draw méthode (Comme il semblerait inutile de répéter beaucoup de dessin dans ma boucle principale quand il ne va pas changer). Je fais les changements au bitmap avec les éléments suivants:
Canvas c = new Canvas(mBackground);
c.drawARGB(...); // etc
Alors, naturellement, je reçois une exception
java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor
Donc, pour éviter que je fait une copie du bitmap afin qu'il soit mutable
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image).copy(Bitmap.Config.ARGB_8888, true);
Qui évite le problème, mais il provoque parfois OutOfMemoryExceptions, connaissez-vous de meilleurs moyens d'atteindre ce que je veux?
copie à l'intérieur de la mémoire ne fonctionne pas pour moi si elle est l'image originale, je l'ai trouvé un moyen en utilisant MappedByteBuffer, je l'ai blogué ici: http: // sudarnimalan. blogspot.com/2011/09/android-convert-immutable-bitmap-into.html –