Drawable、Bitmap和数组三者之间的互相转化

Drawable、Bitmap和数组的互相转化

===========================================================================

数组和Bitmap之间的转换

  1. 数组转换成Bitmap
int[] byteArray;                  //byteArray就是存着Bitmap的数组
Bitmap mBgBitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

2.Bitmap转换成数组

2.1 这种方法获得数组能通过上面提到的方法转化为Bitmap回去

ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] byteArray = baos.toByteArray();

2.2 这种方法获取的数组不能通过上面讲的方法转换去为Bitmap,不知道为什么(持续探究原因中)

int bytes = bitmap.getByteCount();
ByteBuffer buf = ByteBuffer.allocate(bytes);
bitmap.copyPixelsToBuffer(buf);
byte[] byteArray = buf.array();

Bitmap和Drawable之间的互相转换

Drawable转换成Bitmap
3.1 先转化为BitmapDrawable对象
Bitmap bitmap = ((BitmapDrawable)mDrawable).getBitmap();

3.2 用Bitmap实例new出Drawable对象
Drawable drawable =new BitmapDrawable(bitmap);

3.3 创建Bitmap对象

Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
                    drawable.getIntrinsicHeight(),
                    drawable.getOpacity() !=
             PixelFormat.OPAQUE?              Bitmap.Config.ARGB_8888:Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
//canvas.setBitmap(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
drawable.draw(canvas);

你可能感兴趣的:(android)