Whenever we need to rotate and resize a huge image file on Android (no bitmap allocated yet), the usual steps would be to first load the image into a resized bitmap, then do the rotation on another newly created bitmap.
If I do the rotation first I'll probably end with the dreaded OutOfMemoryError. This is quite logical and I'm OK with that.
Problem is, both approaches include having two bitmaps at once in memory at some point, and I'm on a tight memory budget here, even after implementing bitmap scaling as the official docs say (https://developer.android.com/topic/performance/graphics/load-bitmap). A typical implementation looks like this:
Bitmap bitmapResized = resizeBitmap(fSource, nTargetWidth, nTargetHeight);
Bitmap bitmapRotated = rotateBitmap(bitmapResized, nOrientation);
[recycle both bitmaps here]
Is there any way to do both steps at once in a memory lightweight fashion?
I have read about renderscript but I wasn't able to find code that does not take an already allocated bitmap.