Bitmap与Byte、Drawable之间的转换

1)Bitmap 转化为 byte

ByteArrayOutputStream out = new ByteArrayOutputStream();

bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);

byte[] array= out.toByteArray();
2)byte转化为bitmap

final ContentResolver contentResolver = context.getContentResolver();

final PackageManager manager = context.getPackageManager();

final Cursor c = contentResolver.query(uri, null, null, null, null);

final int icon3DIndex = c.getColumnIndexOrThrow(ColumnName);

byte[] data = c.getBlob(icon3DIndex);

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
3)bitmap 转换 drawable
Bitmap bitmap = new Bitmap(...);

Drawable drawable = new BitmapDrawable(bitmap);
//Drawable drawable = new FastBitmapDrawable(bitmap);
4)Drawable to Bitmap
a. BitmapDrawable, FastBitmapDrawable直接用getBitmap

b. 其他类型的Drawable用Canvas画到一个bitmap上

Canvas canvas = new Canvas(bitmap) drawable.draw(canvas);
Drawable d = ImagesList.get(0);

Bitmap bitmap =  ((BitmapDrawable)d).getBitmap();

 

android在处理一写图片资源的时候,会进行一些类型的转换,现在有空整理一下,以便于以后随时可用

1、drawable---->bitmap

View Code
复制代码
 1 public static Bitmap drawableToBitmap(Drawable drawable) {             
 2        Bitmap bitmap = Bitmap   
 3                        .createBitmap(   
 4                                       drawable.getIntrinsicWidth(),   
 5                                        drawable.getIntrinsicHeight(),   
 6                                       drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888   
 7                                                       : Bitmap.Config.RGB_565);           Canvas canvas = new Canvas(bitmap);   
 8        //canvas.setBitmap(bitmap);   
 9        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());   
10         drawable.draw(canvas);   
11        return bitmap;   
12 }  
复制代码

2、从资源中获取Bitmap:drawable---->bitmap

View Code
1 Resources res=getResources();     
2 Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);  
3 //或者这种方法也行,这两种方法都一样
4 Bitmap bmp = ((BitmapDrawable)this.getResources.getDrawable(R.drawable.pic)).getBitmap();

3、bitmap---->drawable

View Code
复制代码
1 /** 
2     * Bitmap转化为drawable 
3     * @param bitmap 
4     * @return 
5     */  
6     public static Drawable bitmap2Drawable(Bitmap bitmap){  
7         return new BitmapDrawable(bitmap) ;  
8     }  
复制代码

4、bitmap---->byte[]

View Code
1 private 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

View Code
复制代码
1 private Bitmap Bytes2Bimap(byte[] b){   
2             if(b.length!=0){   
3                 return BitmapFactory.decodeByteArray(b, 0, b.length);   
4             }   
5             else {   
6                 return null;   
7             }   
8      }  
复制代码
posted @ 2012-11-24 13:04  crazywenza  阅读(281)  评论(0编辑  收藏  举报