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

  • 相关阅读:
    进阶篇:3.1.8)DFM塑胶-注射模具和设备
    PAT-甲级-1001-A+B Format
    腾讯-004-两个排序数组的中位数
    机器学习三 决策树
    腾讯-002-两数相加
    2018.3.15
    2018.3.14
    2018.3.13
    废代码合集
    边缘检测程序(matlab)
  • 原文地址:https://www.cnblogs.com/lyz459/p/3144499.html
Copyright © 2020-2023  润新知