Drawable、Bitmap和数组的互相转化
===========================================================================
数组和Bitmap之间的转换
- 数组转换成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);