使用此方法先减小图像大小(文件指向 SD 卡上的照片)
//decodes image and scales it to reduce memory consumption
private Bitmap decodeFile(File f){
    try {
        //decode image size
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inJustDecodeBounds = true;
        FileInputStream stream1=new FileInputStream(f);
        BitmapFactory.decodeStream(stream1,null,o);
        stream1.close();
        //Find the correct scale value. It should be the power of 2.
        // maximum size is 50
        final int REQUIRED_SIZE=40;
        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;
        FileInputStream stream2=new FileInputStream(f);
        Bitmap bitmap=BitmapFactory.decodeStream(stream2, null, o2);
        stream2.close();
        return bitmap;
    } catch (FileNotFoundException e) {
    } 
    catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
// 这里是如何调用上面的方法
                    String path = "/mnt/sdcard/DCIM/camera/IMG_2001.jpg";
                    Drawable background = hash_map.get(path);
                    if (background == null) {
                    try {
                        Bitmap bitmap = decodeFile(new File(path));
                        background = new BitmapDrawable(bitmap);
                        if (hash_map.size() > 600) {
                            // to prevent HashMap from growing too large.
                            hash_map.clear();
                        }
                        hash_map.put(path, background);
                    } catch (Throwable e) {
                        // in case there is an exception, like running out of memory.
                        if (e instanceof OutOfMemoryError) {
                            hash_map.clear();
                        }
                    }
                 }