zoukankan      html  css  js  c++  java
  • Drawable和Bitmap转换

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

  • 相关阅读:
    线程和信号
    线程取消状态和取消类型
    线程本地缓存
    线程安全函数的概念
    线程/同步对象的属性对象
    查看安全策略
    ss性能
    三次握手四次断开
    线程同步--屏障
    vs2008 编译时候 自动关闭 问题解决方法
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6972541.html
Copyright © 2011-2022 走看看