1. 程式人生 > >Android 中 資原始檔圖片轉 Bitmap 和 Drawable 以及相互轉換的方法

Android 中 資原始檔圖片轉 Bitmap 和 Drawable 以及相互轉換的方法

Android 圖片轉換的方法總結:
一、Bitmap 轉換成 Drawable
對 Bitmap 進行強制轉換

Drawable drawable = new BitmapDrawable(bmp);

二、Drawable 轉換成 Bitmap
方法一
通過 BitmapFactory 中的 decodeResource 方法,將資原始檔中的R.mipmap.ic_launcher 轉化成Bitmap。

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

參考連結