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);

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值