Drawable 与byte 之间的互相转换
最近的任务需要把Drawable保存到数据库,在这里想到的方法就是把Drawable 转换为byte存起来
public class BitmapUtil { /** * 将drawable 图像转化成二进制字节数组 * @param drawable 要转化drawable对象 * @return byte[] */ public static byte[] getDrawableByte(Drawable drawable) { 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); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(canvas); // 创建一个字节数组输出流 ByteArrayOutputStream stream = new ByteArrayOutputStream(); //设置位图的压缩格式,质量为100%,并放入字节数组输出流中 //选择Bitmap.CompressFormat.PNG,不然把byte[]转换成drawable图像会有黑色背景 bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); // 将字节数组输出流转化为字节数组byte[] byte[] bitmapdata = stream.toByteArray(); return bitmapdata; } /** * 将二进制字节数组 转化成 drawable 图像 * @param bytes * @return */ public static Drawable getDrawable(byte[] bytes,Context context) { Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); BitmapDrawable bd = new BitmapDrawable(context.getResources(), bitmap); return bd; } }