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

最近想试试从Android部分获取一张图片在Unity中进行显示,需要将图片转换为byte[]格式,借此机会整理一下Android的图片转换,即Drawable、Bitmap、byte[]之间的转换,希望能给大家带来一些帮助。

1、Drawable → Bitmap

转成Bitmap对象后,可以将Drawable对象通过Android的SK库存成一个字节输出流,最终还可以保存成为jpg和png的文件。

转化方法有不少:

比如有一个Drawable da

BitmapDrawable bd = (BitmapDrawable) da;

Bitmap bm = bd.getBitmap();

最终bm就是我们需要的Bitmap对象了。

或者使用如下方式:

代码如下:

public static Bitmap drawable2Bitmap(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、Bitmap → Drawable

比如有一个Bitmap bm

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

代码如下:

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

3、从资源中获取Bitmap

代码如下:

Resources res=getResources();Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);

4、Bitmap → byte[]

代码如下:

private byte[] Bitmap2Bytes(Bitmap bm){      ByteArrayOutputStream baos = new ByteArrayOutputStream();       bm.compress(Bitmap.CompressFormat.PNG, 100, baos);        return baos.toByteArray();     }  

5、 byte[] → Bitmap

代码如下:

private Bitmap Bytes2Bimap(byte[] b){              if(b.length!=0){                  return BitmapFactory.decodeByteArray(b, 0, b.length);             }              else {                  return null;              }        }  

更多相关文章

  1. android Parcelable接口序列化对象
  2. android 开发中判断网络是否连接的代码
  3. android设置横屏代码
  4. Android数据库代码备忘
  5. eclipse中查看Android SDK源代码
  6. 【Android 初学】10、Intent对象的使用
  7. Android获取运营商代码

随机推荐

  1. Android底部菜单栏 仿微博效果
  2. Android平台移植初解
  3. Android显示设备管理以及转屏流程
  4. android 事件处理(三)
  5. Android官方技术文档翻译——新构建系统
  6. Android设置安装后无界面,只有service在后
  7. Android开发实践:自定义ViewGroup的onLayo
  8. android 实现图片上传功能 Tomcat作为服
  9. 《Android权威编程指南》挑战练习:定制 to
  10. Android-Module:ListView常用XML属性