Advertisement

Android 中 资源文件图片转 Bitmap 和 Drawable 以及相互转换的方法

阅读量:

Android 图片转换方法总结:
一、将 Bitmap 强制转换为 Drawable
通过强制转换将 Bitmap 转化为 Drawable 对象。

复制代码
    Drawable drawable = new BitmapDrawable(bmp);
    
    
      
    
    代码解读

第二部分:将Drawable 转换为 Bitmap
方法一:通过-ZaRS框架中的decodeResource方法实现该转换过程

复制代码
    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
    
    
      
    
    代码解读

方法二
根据Drawable创建一个新的Bitmap,封装一个方法:

复制代码
    public static Bitmap drawableToBitmap(Drawable drawable) {
        int w = drawable.getIntrinsicWidth();//获取宽
        int h = drawable.getIntrinsicHeight();//获取高
        Bitmap.Config btmConfig =drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888: Bitmap.Config.RGB_565;
        Bitmap bitmap = Bitmap.createBitmap(w, h, btmConfig);
        //绘制新的bitmap
        Canvas canvas = new Canvas(bitmap);
        drawable.setBounds(0, 0, w, h);
        drawable.draw(canvas);
        //返回bitmap
        return bitmap;
    }
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

方法三 通过将Drable对象转换为BitmapDrawable来实现,并进而调用getBitmap方法获取

复制代码
     Drawable drawable =getResources().getDrawable(R.mipmap.ic_launcher);//获取drawable
     BitmapDrawable bd = (BitmapDrawable) drawable;
     Bitmap bm= bd.getBitmap();
    
    
      
      
      
    
    代码解读

三、Bitmap 转换成 byte[]
封装方法

复制代码
    //Bitmap 转换成 byte[]
    public static byte[] bitmapToBytes(Bitmap bitmap){
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
        return byteArrayOutputStream.toByteArray();
    }
    
    
      
      
      
      
      
      
    
    代码解读

四、byte[] 转化成 Bitmap
封装方法

复制代码
    public static Bitmap bytesToBitmap(byte[] b) {
        if (b.length != 0) {
            return BitmapFactory.decodeByteArray(b, 0, b.length); //返回bitmap
        } else {
            return null;
        }
    }
    
    
      
      
      
      
      
      
      
    
    代码解读

参考链接

全部评论 (0)

还没有任何评论哟~