I'm building an imagepicker in my Android app, for which I used the example code on this page. This basically gives me a button which opens the possibility to get a file from the SD card, or one by taking a picture. Once I selected an image, it displays the image using a simple ImageView. In general, this works perfectly well; I can select an image, then click the select image button again and select another image. So far so good.. with small files that is.
The problem starts, when I use "larger files"; pictures I simply took with the built-in phone camera. I can select one, and that works well. When I hit the select-image button again and select another image, I get an OutOfMemoryError on this line (line 75 of the linked to page):
bitmap = BitmapFactory.decodeFile(path);
My test-device is quite a modern one (Galaxy S4 Mini), so that shouldn't be the problem. Since I need to send the image as a base64 string to an API for which I need to resize it anyway, I can resize the image using something like this:
Bitmap yourBitmap;
Bitmap resized = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true);
But unfortunately, for this I first need to decode the file, which actually causes the problem in the first place.
So my question is; is there a way that I can resize the image before I decode it to a bitmap? All tips are welcome!