`
shuai1234
  • 浏览: 932518 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

Drawable、Bitmap、byte[]之间的转换

阅读更多

 



android在处理一写图片资源的时候,会进行一些类型的转换,现在有空整理一下:

 

1、Drawable → Bitmap

Java代码   收藏代码
  1. public static Bitmap drawableToBitmap(Drawable drawable) {  
  2.           
  3.         Bitmap bitmap = Bitmap  
  4.                         .createBitmap(  
  5.                                         drawable.getIntrinsicWidth(),  
  6.                                         drawable.getIntrinsicHeight(),  
  7.                                         drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888  
  8.                                                         : Bitmap.Config.RGB_565);  
  9.         Canvas canvas = new Canvas(bitmap);  
  10.         //canvas.setBitmap(bitmap);  
  11.         drawable.setBounds(00, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());  
  12.         drawable.draw(canvas);  
  13.         return bitmap;  
  14. }  

 

2、从资源中获取Bitmap

 

Java代码   收藏代码
  1. Resources res=getResources();  
  2.   
  3. Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);  

 

3、Bitmap → byte[]

 

Java代码   收藏代码
  1. private byte[] Bitmap2Bytes(Bitmap bm){  
  2.     ByteArrayOutputStream baos = new ByteArrayOutputStream();    
  3.     bm.compress(Bitmap.CompressFormat.PNG, 100, baos);    
  4.     return baos.toByteArray();  
  5.    }  

 
4、 byte[] → Bitmap

Java代码   收藏代码
  1. private Bitmap Bytes2Bimap(byte[] b){  
  2.             if(b.length!=0){  
  3.                 return BitmapFactory.decodeByteArray(b, 0, b.length);  
  4.             }  
  5.             else {  
  6.                 return null;  
  7.             }  
  8.       }  

 

一、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; 
}

 

分享到:
评论

相关推荐

    android_Drawable、Bitmap、byte[]之间的转换.doc

    详细的介绍了android_Drawable、Bitmap、byte[]之间的转换 在android开发中非常实用

    Android Drawable、Bitmap、byte、灰度 转换

    Android Drawable、Bitmap、byte、灰度 转换

    Android Drawable、Bitmap、byte、灰度 之间的转换

    Android Drawable、Bitmap、byte、灰度 之间的转换

    java_一些图片管理工具类的标准代码_android_bitmap转drawable_高斯模糊代码

    bitmap转byte[] 获取缩略图 保存图片 光晕效果 获取bitmap的字节大小 将彩色图转换为黑白图 转换成圆角 高斯模糊 圆形图片 从Assets中读取图片 按比例缩小图片(单位像素) 判断图片旋转情况 旋转图片 图片旋转 根据...

    Android静默安装常用工具类

    图片工具类,可用于Bitmap, byte array, Drawable之间进行转换以及图片缩放,目前功能薄弱,后面会进行增强。如: bitmapToDrawable(Bitmap b) bimap转换为drawable drawableToBitmap(Drawable d) drawable转换为...

    Android一些模板代码

    android BitMap、Drawable、inputStream及byte[] 互转,dp和px之间转换,还原短信,横竖屏切换,获取各种窗体高度,禁用home键盘,开机启动,开机启动应用,挪动dialog的位置,判断网络状态,权限列表,设置apn,调节屏幕亮度,...

    Android开发人员不得不收集的代码

    drawable2Bitmap, bitmap2Drawable : drawable 与 bitmap 互转 drawable2Bytes, bytes2Drawable : drawable 与 byteArr 互转 view2Bitmap : view 转 Bitmap dp2px, px2dp : dp 与 px 互转 sp2px, px2sp : sp 与 px ...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--BitMap、Drawable、inputStream及byte[] 互转 |--ContentProvider内容提供者定义 |--DatePicker日期控件 |--desktop |--Dialog之位置的挪动与控制 |--Dialog实现无标提栏及自定义风格 |--Dialog风格Activity的...

    android图片处理总结

    1. android 图像处理系列之一--Bitmap、Drawable 和byte[]之间的相互转换..................................................2 2. android 图像处理系列之二--图片旋转、缩放、反转............................

    Android 开发技巧

    9.80、DRAWABLE、BITMAP、BYTE[]之间的转换 318 9.81、高循环效率的代码 320 9.82、给模拟器打电话发短信 321 9.83、加快模拟器速度 321 9.83.1、模拟器 “尚未注册网络” 322 9.84、EMULATOR命令行参数 322 9.85、...

    Android开发资料合集-World版!

    9.80、DRAWABLE、BITMAP、BYTE[]之间的转换 318 9.81、高循环效率的代码 320 9.82、给模拟器打电话发短信 321 9.83、加快模拟器速度 321 9.83.1、模拟器 “尚未注册网络” 322 9.84、EMULATOR命令行参数 322 9.85、...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

Global site tag (gtag.js) - Google Analytics