1. 程式人生 > >BitMap二次取樣程式碼

BitMap二次取樣程式碼

 /**
     * @param filePath   要載入的圖片路徑
     * @param destWidth  顯示圖片的控制元件寬度
     * @param destHeight 顯示圖片的控制元件的高度
     * @return
     */
    public static Bitmap getBitmap(String filePath, int destWidth, int destHeight) {
        //第一次取樣
        BitmapFactory.Options options = new BitmapFactory.Options
(); //該屬性設定為true只會載入圖片的邊框進來,並不會載入圖片具體的畫素點 options.inJustDecodeBounds = true; //第一次載入圖片,這時只會載入圖片的邊框進來,並不會載入圖片中的畫素點 BitmapFactory.decodeFile(filePath, options); //獲得原圖的寬和高 int outWidth = options.outWidth; int outHeight = options.outHeight; //定義縮放比例
int sampleSize = 1; while (outHeight / sampleSize > destHeight || outWidth / sampleSize > destWidth) { //如果寬高的任意一方的縮放比例沒有達到要求,都繼續增大縮放比例 //sampleSize應該為2的n次冪,如果給sampleSize設定的數字不是2的n次冪,那麼系統會就近取值 sampleSize *= 2; } /********************************************************************************************/
//至此,第一次取樣已經結束,我們已經成功的計算出了sampleSize的大小 /********************************************************************************************/ //二次取樣開始 //二次取樣時我需要將圖片加載出來顯示,不能只加載圖片的框架,因此inJustDecodeBounds屬性要設定為false options.inJustDecodeBounds = false; //設定縮放比例 options.inSampleSize = sampleSize; options.inPreferredConfig = Bitmap.Config.ARGB_8888; //載入圖片並返回 return BitmapFactory.decodeFile(filePath, options); } --------------------- 作者:_江南一點雨 來源:CSDN 原文:https://blog.csdn.net/u012702547/article/details/51245133