Android中 Bitmap和Drawable相互转换的方法

1、Drawable –> Bitmap

  1.     Bitmap drawable2Bitmap(Drawable drawable) {
  2.         if (drawable instanceof BitmapDrawable) {  
  3.             return ((BitmapDrawable) drawable).getBitmap();  
  4.         } else if (drawable instanceof NinePatchDrawable) {  
  5.             Bitmap bitmap = Bitmap
  6.                     .createBitmap(
  7.                             drawable.getIntrinsicWidth(),
  8.                             drawable.getIntrinsicHeight(),
  9.                             drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
  10.                                     : Bitmap.Config.RGB_565);
  11.             Canvas canvas = new Canvas(bitmap);  
  12.             drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),  
  13.                     drawable.getIntrinsicHeight());
  14.             drawable.draw(canvas);
  15.             return bitmap;  
  16.         } else {  
  17.             return null;  
  18.         }
  19.     }

2、从资源中获取的Drawable –> Bitmap

  1.     Resources res = getResources();
  2.     Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.pic);

 

3、Bitmap –> Drawable

  1.     Drawable bitmap2Drawable(Bitmap bitmap) {
  2.         return new BitmapDrawable(bitmap);  
  3.     }

 

4、Bitmap –> byte[]

  1.     byte[] Bitmap2Bytes(Bitmap bm) {  
  2.         ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  3.         bm.compress(Bitmap.CompressFormat.PNG, 100, baos);  
  4.         return baos.toByteArray();  
  5.     }

 

5、 byte[] –> Bitmap

    1.     Bitmap Bytes2Bimap(byte[] b) {  
    2.         if (b.length != 0) {  
    3.             return BitmapFactory.decodeByteArray(b, 0, b.length);  
    4.         } else {  
    5.             return null;  
    6.         }
    7.     }