zoukankan      html  css  js  c++  java
  • Android -- Drawable && Bitmap

    Bitmap转Drawable                                                                    

    Bitmap bm=xxx; 
    BitmapDrawable bd=new BitmapDrawable(bm);

    因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。

    Drawable转Bitmap                                                                    

    Drawable d=xxx; 
    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();
    }

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

    我是天王盖地虎的分割线                                                             

  • 相关阅读:
    struts2实现文件上传和下载
    Struts2中Action之ResultType
    初识Struts2
    Hibernate中get()和load()方法区别
    初识Hibernate框架,进行简单的增删改查操作
    memge和saveOrUpdate的区别
    apt-get install 出现could not open lock file /var/lib/dpkg/lock错误问题
    vscode工程目录文件及文件夹摘选
    C++引用
    内存分配区基本模型
  • 原文地址:https://www.cnblogs.com/yydcdut/p/4080147.html
Copyright © 2011-2022 走看看