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

  • 相关阅读:
    <NET CLR via c# 第4版>笔记 第18章 定制特性
    <NET CLR via c# 第4版>笔记 第17章 委托
    <NET CLR via c# 第4版>笔记 第16章 数组
    <NET CLR via c# 第4版>笔记 第15章 枚举类型和位标志
    <NET CLR via c# 第4版> 读书笔记--目录
    <NET CLR via c# 第4版>笔记 第14章 字符,字符串和文本处理
    <NET CLR via c# 第4版>笔记 第13章 接口
    <NET CLR via c# 第4版>笔记 第12章 泛型
    python 之实例属性和类属性
    python 之获取对象信息
  • 原文地址:https://www.cnblogs.com/lyz459/p/3144499.html
Copyright © 2011-2022 走看看