当前位置:操作系统 > 安卓/Android >>

Android进阶之Bitmap、Drawable、byte[]转换

将Drawable转化为Bitmap


[java] public static Bitmap drawableToBitmap(Drawable drawable) { 
        // 取 drawable 的长宽  
        int w = drawable.getIntrinsicWidth(); 
        int h = drawable.getIntrinsicHeight(); 
 
        // 取 drawable 的颜色格式  
        Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 
                : Bitmap.Config.RGB_565; 
        // 建立对应 bitmap  
        Bitmap bitmap = Bitmap.createBitmap(w, h, config); 
        // 建立对应 bitmap 的画布  
        Canvas canvas = new Canvas(bitmap); 
        drawable.setBounds(0, 0, w, h); 
        // 把 drawable 内容画到画布中  
        drawable.draw(canvas); 
        return bitmap; 
    } 
public static Bitmap drawableToBitmap(Drawable drawable) {
  // 取 drawable 的长宽
  int w = drawable.getIntrinsicWidth();
  int h = drawable.getIntrinsicHeight();

  // 取 drawable 的颜色格式
  Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
    : Bitmap.Config.RGB_565;
  // 建立对应 bitmap
  Bitmap bitmap = Bitmap.createBitmap(w, h, config);
  // 建立对应 bitmap 的画布 www.zzzyk.com
  Canvas canvas = new Canvas(bitmap);
  drawable.setBounds(0, 0, w, h);
  // 把 drawable 内容画到画布中
  drawable.draw(canvas);
  return bitmap;
 }
从资源中获取Bitmap
[java]  Resources res = getResources(); 
Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.icon); 
  Resources res = getResources();
  Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.icon);

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

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

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

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

Bitmap转换成Drawable
[java] Bitmap bm=xxx; //xxx根据你的情况获取  
BitmapDrawable bd= new BitmapDrawable(getResource(), bm);  
因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。 
Bitmap bm=xxx; //xxx根据你的情况获取
BitmapDrawable bd= new BitmapDrawable(getResource(), bm);
因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。



摘自 落日小屋
 

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,