一、Bitmap转Drawable








Bitmap bm=xxx; //xxx根据你的情况获取




BitmapDrawable bd=new BitmapDrawable(bm);
因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。




二、 Drawable转Bitmap




转成Bitmap对象后,可以将Drawable对象通过Android的SK库存成一个字节输出流,最终还可以保存成为jpg和png的文件。
Drawable d=xxx; //xxx根据自己的情况获取drawable




BitmapDrawable bd = (BitmapDrawable) d;




Bitmap bm = bd.getBitmap();
最终bm就是我们需要的Bitmap对象了。












// 从资源中获取Bitmap
public static Bitmap getBitmapFromResources(Activity act, int resId) {
Resources res = act.getResources();
return BitmapFactory.decodeResource(res, resId);
}




// byte[] → Bitmap
public static Bitmap convertBytes2Bimap(byte[] b) {
if (b.length == 0) {
return null;
}
return BitmapFactory.decodeByteArray(b, 0, b.length);
}




// Bitmap → byte[]
public static byte[] convertBitmap2Bytes(Bitmap bm) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}




// 1)Drawable → Bitmap
public static Bitmap convertDrawable2BitmapByCanvas(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);
// canvas.setBitmap(bitmap);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
drawable.draw(canvas);
return bitmap;
}




// 2)Drawable → Bitmap
public static Bitmap convertDrawable2BitmapSimple(Drawable drawable){
BitmapDrawable bd = (BitmapDrawable) drawable;
return bd.getBitmap();
}




// Bitmap → Drawable
public static Drawable convertBitmap2Drawable(Bitmap bitmap) {
BitmapDrawable bd = new BitmapDrawable(bitmap);
// 因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。
return bd;
}

更多相关文章

  1. Intent传递对象的两种方法(Serializable,Parcelable)
  2. 关于Android PopupWindow中实用Spinner控件点击APP Crash情况整
  3. Android系列之Intent传递对象的两种方法
  4. Android studio插件GsonFormat,返回json快速创建实体对象
  5. Android 设备网络信息的获取(网络类型、网络强度、网络速度、代理
  6. 【Android】Android如何查看分区情况
  7. android将对象写入文件和从文件中读取对象数据
  8. android adb shell 不可用的情况

随机推荐

  1. Android嵌入式开发
  2. android的测试工具CTS
  3. Android
  4. android的wifi扫描流程及管理(framework层
  5. Android(安卓)RIL
  6. Android仿百度谷歌自动提示——AutoCompl
  7. ClassLoader解析——Android篇
  8. Android黑科技动态加载(三)之动态加载资
  9. Android横竖屏切换总结
  10. Android(安卓)ContentProvider