Immutable bitmap crash error
You have to convert your workingBitmap
to Mutable Bitmap
for drawing on Canvas
. (Note: this method does not help save memory, it will use extra memory)
Bitmap workingBitmap = Bitmap.createBitmap(chosenFrame);
Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap);
This answer helps don't waste memory Convert immutable bitmap to a mutable bitmap
BitmapFactory.decodeResource()
returns an immutable copy of the bitmap and you cannot draw to its canvas. In order to get its canvas, you need to get a mutable copy of the images' bitmap and that can be done with single line code addition.
opt.inMutable = true;
Add that line to your code and it should address the crash.
Unless you don't want to make your IMMUTABLE bitmap to MUTABLE bitmap, you can save memory by ALWAYS REUSING THE BITMAP
workingBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(workingBitmap);
However I think this may be same as making the bitmap mutable by calling
workingBitmap.isMutable = true