保留圖片的寬高比,實現寬高等比例縮放

在開發中圖片縮放是經常要用的了,近日需要實現一個漫畫書項目,在最後閱讀漫畫界面出現了圖片不是被橫向拉伸的過大就是被縱向拉伸的過長,剛開始寄希望於ImageView的ScaleType和Imageloader的自定義拉伸配置,結果雖然基本能等比例縮放,但是卻出現了另外一個很惱火的Bug—–圖片加載卡頓和裁剪不合適,最後在網上尋找到相關等比例拉伸代碼,修改後,完美解決,代碼如下:

 public static Bitmap scaleImage( Context content,Bitmap bm){
        //獲得屏幕的寬高

        WindowManager wm1 =( (Activity)content).getWindowManager();
        int screenWidth = wm1.getDefaultDisplay().getWidth()-10;
        //int screenHeigh = wm1.getDefaultDisplay().getHeight();


        // 獲得圖片的寬高
        int width = bm.getWidth();
        int height = bm.getHeight();
        // 計算縮放比例
        float scaleWidth = ((float) screenWidth) / width;
        float scaleHeight=scaleWidth;
        // float scaleHeight = ((float) screenHeigh) / height;
        // 取得想要縮放的matrix參數
        Matrix matrix = new Matrix();
        matrix.postScale(scaleWidth, scaleHeight);
        // 得到新的圖片
        Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
        return newbm;
    }

上面代碼根據需求修改過,可以看到這裏首先獲得了屏幕的寬高,然後計算縮放比例,最後調用matrix.postScale()方法得到寬高縮放的矩陣,然後通過重繪bitmap實現寬高等比例縮放。
當然通過上面的代碼也可以其他比例的縮放,這裏就不囉嗦了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章