Android is more concerned about memory and the BitmapFactory accepts limited size images only.
I think the following will help you to scale image before use.
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
public class ImageScale 
{
/**
 * Decodes the path of the image to Bitmap Image.
 * @param imagePath : path of the image.
 * @return Bitmap image.
 */
 public Bitmap decodeImage(String imagePath)
 {  
     Bitmap bitmap=null;
     try
     {
         File file=new File(imagePath);
         BitmapFactory.Options o = new BitmapFactory.Options();
         o.inJustDecodeBounds = true;
         BitmapFactory.decodeStream(new FileInputStream(file),null,o);
         final int REQUIRED_SIZE=200;
         int width_tmp=o.outWidth, height_tmp=o.outHeight;
         int scale=1;
         while(true)
         {
             if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
             break;
             width_tmp/=2;
             height_tmp/=2;
             scale*=2;  
         }  
         BitmapFactory.Options options=new BitmapFactory.Options();
         options.inSampleSize=scale;
         bitmap=BitmapFactory.decodeStream(new FileInputStream(file), null, options);
     }  
     catch(Exception e) 
     {  
         bitmap = null;
     }      
     return bitmap; 
 }
 /**
  * Resizes the given Bitmap to Given size.
  * @param bm : Bitmap to resize.
  * @param newHeight : Height to resize.
  * @param newWidth : Width to resize.
  * @return Resized Bitmap.
  */
 public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) 
 {
    Bitmap resizedBitmap = null;
    try
    {
        if(bm!=null)
        {
            int width = bm.getWidth();
            int height = bm.getHeight();
            float scaleWidth = ((float) newWidth) / width;
            float scaleHeight = ((float) newHeight) / height;
            // create a matrix for the manipulation
            Matrix matrix = new Matrix();
            // resize the bit map
            matrix.postScale(scaleWidth, scaleHeight);
            // recreate the new Bitmap
            resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
        }
    }
    catch(Exception e)
    {
        resizedBitmap = null;
    }
    return resizedBitmap;
} 
}
To get image path from URI use this function : 
private String decodePath(Uri data)
{        
     Cursor cursor = getContentResolver().query(data, null, null, null, null);
     cursor.moveToFirst(); 
     int idx = cursor.getColumnIndex(ImageColumns.DATA);
     String fileSrc = cursor.getString(idx);   
     return fileSrc;
}