2014-06-23

[Android] 將resource轉換成Bitmap (transforming drawable resource into Bitmap)

 private Bitmap decodeFile(int resId) {
     try {
         // decode image size
         BitmapFactory.Options o = new BitmapFactory.Options();
         o.inJustDecodeBounds = true;
         BitmapFactory.decodeResource(context.getResources(), resId, 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++;
         }

         // decode with inSampleSize
         BitmapFactory.Options o2 = new BitmapFactory.Options();
         o2.inSampleSize = scale;
         return BitmapFactory.decodeResource(context.getResources(), resId, o2);
     } catch (Exception e) {
     }
     return null;
 }