Use bitmap options:
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565; //Use this if you dont require Alpha channel
options.inSampleSize = 4; // The higher, the smaller the image size and resolution read in
Then set the options in the decode
BitmapFactory.decodeFile(path, options)
Here is a good link to read through, about how to display Bitmaps effciently.
You could even write a method like this to obtain a sized image at your desired resolution.
The following method checks the size the image, then decodes from file, with in-sample size to resize your image from sdcard accordingly, while keeping memory usage at a low.
   public static Bitmap decodeSampledBitmapFromFile(string path,
        int reqWidth, int reqHeight) { // BEST QUALITY MATCH
    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(path, options);
    // Calculate inSampleSize
        // Raw height and width of image
        final int height = options.outHeight;
        final int width = options.outWidth;
        options.inPreferredConfig = Bitmap.Config.RGB_565;
        int inSampleSize = 1;
        if (height > reqHeight) {
            inSampleSize = Math.round((float)height / (float)reqHeight);
        }
        int expectedWidth = width / inSampleSize;
        if (expectedWidth > reqWidth) {
            //if(Math.round((float)width / (float)reqWidth) > inSampleSize) // If bigger SampSize..
            inSampleSize = Math.round((float)width / (float)reqWidth);
        }
    options.inSampleSize = inSampleSize;
    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
        return BitmapFactory.decodeFile(path, options);
  }