Bitmap優化問題

在Android項目中,如果直接使用ImageView顯示Bitmap會佔用較多的資源,如果圖片過大,會造成程序崩潰。爲了解決這個問題需要對Bitmap進行壓縮,以節省內存。因爲項目中用到,所以寫下來,以備不時之需。
我們可以使用BitmapFactory的options設置圖片壓縮比,具體代碼如下:
/**
     * @param absolutePath 圖片文件路徑
     * @return 壓縮後的圖片
     */
public static Bitmap bitmapReduce(String absolutePath){
        Bitmap bm;
        BitmapFactory.Options opt = new BitmapFactory.Options();   
        //這個isjustdecodebounds很重要      
        opt.inJustDecodeBounds = true;  
        bm = BitmapFactory.decodeFile(absolutePath, opt);  

        //獲取到這個圖片的原始寬度和高度  
        int picWidth  = opt.outWidth;  
        int picHeight = opt.outHeight;  

        //這個可以自己設置,也可以傳參,值越小,壓縮程度越大
        int screenWidth = 200;  
        int screenHeight = 200;  

        //isSampleSize是表示對圖片的縮放程度,比如值爲2圖片的寬度和高度都變爲以前的1/2,圖片大小爲原來1/4
        opt.inSampleSize = 1;  
        //根據屏的大小和圖片大小計算出縮放比例  
        if(picWidth > picHeight){  
            if(picWidth > screenWidth)  
                opt.inSampleSize = picWidth/screenWidth;  
        }  
        else{  
            if(picHeight > screenHeight)  

                opt.inSampleSize = picHeight/screenHeight;  
        }  
        //這次再真正地生成一個有像素的,返回經過縮放了的bitmap  
        opt.inJustDecodeBounds = false;  
        bm = BitmapFactory.decodeFile(absolutePath, opt);  
        return bm;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章