I’m trying to rotate a camera image. The code looks like that:
Bitmap result = Bitmap.createBitmap(bitmap.getHeight(), bitmap.getWidth(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
canvas.save();
canvas.rotate(90);
canvas.translate(0, -1*bitmap.getHeight());
canvas.drawBitmap(bitmap, new Matrix(), null);
canvas.restore();
String path = String.format(dir+"pic_%d.jpg", System.currentTimeMillis());
stream = new FileOutputStream(path);
bitmap.compress(CompressFormat.JPEG, this.imageQuality, stream);
stream.flush();
stream.close();
Problem is: I’m getting an OutOfMemoryException (first line). Is there some way to get this done by an extra thread or some other solution? Downscaling the image is currently not an option.
If you don’t need an alpha channel in your image, you can use RGB_565 instead of ARGB_8888. That will save you 2 bytes per pixel.