• 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;
    }

  • 相关阅读:
    小兔生仔和汽水换瓶的两个算法
    dpi 编程
    作者赠送的《我的第一本c++书》收到啦
    什么是程序员的优良品质
    如何把事情做对?
    学习应有的态度
    魔方数算法
    我的第二本c++教科书
    如何处理人际关系
    电动玩具的开发思路
  • 原文地址:https://www.cnblogs.com/xiyubaiyang/p/4021837.html
Copyright © 2020-2023  润新知