code: private Bitmap decodeFile(File f){
          try {
              //decode image size
              BitmapFactory.Options o = new BitmapFactory.Options();
              o.inJustDecodeBounds = true;
              BitmapFactory.decodeStream(new FileInputStream(f),null,o);
              
              //Find the correct scale value. It should be the power of 2.
              final int REQUIRED_SIZE=70;
              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;
              }
              
              //decode with inSampleSize
              BitmapFactory.Options o2 = new BitmapFactory.Options();
              o2.inSampleSize=scale;
              return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
          } catch (FileNotFoundException e) {}
          return null;
      }
docs: decodes image and scales it to reduce memory consumption