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
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
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.