The method throws OutOfMemoryError for large images in size( not by resolution) i have 12 MP photos, all of them are different in size(1.5MB, 2.5MB, 3.2MB, 4.1MB) etc and the resolution for all of them are same 4000 x 3000 (pixels).
The resizer method works fine for images less than 3MB in size, but for those images that are >3MB it throws OutOfMemoryError i dont know what could fix it, my app is mainly for resizing large images, and this is really getting me nowhere.
The resizer method is:
public File resizeBitmap(String imPath, int reqSize) {
    File fl = null;
    try{
    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(imPath, options);
    // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqSize);
    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    Bitmap saveImg = BitmapFactory.decodeFile(imPath, options);
    //save resized image
    String tmpName = "IMG_"+String.valueOf(System.currentTimeMillis()) + ".jpg";
    fl = fileCache.getRawFile(tmpName);
    FileOutputStream fos = new FileOutputStream(fl);
    saveImg.compress(Bitmap.CompressFormat.JPEG, 95, fos);
    saveImg.recycle();
    return fl;
}
catch (Throwable eex){
    eex.printStackTrace();
    if(eex instanceof OutOfMemoryError) {
        runOnUiThread(new Runnable() {
            public void run() {
                Toast.makeText(Resizer.this, "Memory ran out", Toast.LENGTH_SHORT).show();
            }
        });
    }
    return null;
 }
}
//Method for calculating insamplesize
public int calculateInSampleSize(BitmapFactory.Options options, int reqSize) {
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
Log.i("width",""+width);
Log.i("height",""+height);
int inSampleSize = 1;
if (height > reqSize || width > reqSize) {
        if (width > height) {
            inSampleSize = Math.round((float) height / (float) reqSize);
        } else {
            inSampleSize = Math.round((float) width / (float) reqSize);
         }
}
return inSampleSize;
}
//Stacktrace
04-11 09:01:19.832: W/System.err(8832): java.lang.OutOfMemoryError
04-11 09:01:19.953: W/System.err(8832):     at  android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
04-11 09:01:19.972: W/System.err(8832):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:529)
04-11 09:01:19.993: W/System.err(8832):     at com.scale.app.Resizer.resizeBitmap(Resizer.java:1290)