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

    我是天王盖地虎的分割线                                                             

  • 相关阅读:
    Python网络编程(weekly summary1)
    Python网络编程(子进程的创建与处理、简单群聊工具)
    Python网络编程(epoll内核监听,多任务多进程)
    Python网络编程(http协议,IO多路复用、select内核监听)
    Python网络编程(socket模块、缓冲区、http协议)
    Python网络编程(OSI模型、网络协议、TCP)
    Linux(Ubuntu 命令大全)
    计算机中的进制和编码
    算法图解(选择排序)
    Python全栈 MySQL 数据库(SQL命令大全、MySQL 、Python调用)
  • 原文地址:https://www.cnblogs.com/yydcdut/p/4080147.html
Copyright © 2011-2022 走看看