圖片處理Java工具類(縮放,圓角,倒影)

123bt 9年前發布 | 3K 次閱讀 Java spring,hibernate,一對一

import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Shader.TileMode;

/**

  • 圖片處理工具類(縮放,圓角,倒影) / public class ImageUtils { /**

    • 圖片縮放 *
    • @param pBitmap
    • @param pW
    • @param pH
    • @return */ public static Bitmap zoomBitmap(Bitmap pBitmap, int pW, int pH) {

      int _width = pBitmap.getWidth();// 獲取原圖的寬 int _heigth = pBitmap.getHeight();// 獲取原圖的高

      // 獲取縮放比 float _ScaleW = (float) pW / _width; float _ScaleH = (float) pH / _heigth;

      Matrix _Matrix = new Matrix();// 創建Matrix矩陣對象

      _Matrix.setScale(_ScaleW, _ScaleH);// 設置寬高的縮放比

      return Bitmap.createBitmap(pBitmap, 0, 0, _width, _heigth, _Matrix,

           true);// 對截原圖的0,0坐標到_width,_heigth的圖片進行_Matrix處理
      

      }

      /**

    • 圖片圓角 *
    • @param pBitmap
    • @param pRoundpx
    • @return */ public static Bitmap RoundedCornerBitmap(Bitmap pBitmap, float pRoundpx) {

      Bitmap _NewBitmap = Bitmap.createBitmap(pBitmap.getWidth(),

           pBitmap.getHeight(), Config.ARGB_8888); // 創建圖片畫布大小
      

      Canvas _Canvas = new Canvas(_NewBitmap); // 創建畫布 _Canvas.drawARGB(0, 0, 0, 0); // 設置畫布透明 Paint _Paint = new Paint(); // 創建畫筆 _Paint.setAntiAlias(true); // 抗鋸齒 _Paint.setColor(0xff000000);// 畫筆顏色透明

      // 畫與原圖片大小一致的圓角矩形 Rect _Rect = new Rect(0, 0, pBitmap.getWidth(), pBitmap.getHeight()); RectF _RectF = new RectF(_Rect); _Canvas.drawRoundRect(_RectF, pRoundpx, pRoundpx, _Paint);

      _Paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 設置下面張圖片與上面張圖片的交互模式 _Canvas.drawBitmap(pBitmap, _Rect, _Rect, _Paint);// 畫原圖到畫布 return _NewBitmap; }

      /**

    • 圖片倒影 *
    • @param pBitmap
    • @return */ public static Bitmap ReflectionImageWithOrigin(Bitmap pBitmap) { // 創建等寬,高+高/5的畫布 Bitmap _NewBitmap = Bitmap

           .createBitmap(pBitmap.getWidth(),
                   pBitmap.getHeight() + pBitmap.getHeight() / 5,
                   Config.ARGB_8888);
      

      Canvas _Canvas = new Canvas(_NewBitmap);

      _Canvas.drawBitmap(pBitmap, 0, 0, null);// 畫上原圖

      // 原圖翻轉, Matrix _Matrix = new Matrix(); _Matrix.preScale(1, -1); Bitmap _Bitmap = Bitmap.createBitmap(pBitmap, 0, 0, pBitmap.getWidth(),

           pBitmap.getHeight(), _Matrix, true);
      
      

      // 在剩余畫布上畫上翻轉圖 _Canvas.drawBitmap(_Bitmap, 0, pBitmap.getHeight(), null); Paint _Paint = new Paint();

      // 實現圖片的漸變效果 LinearGradient shader = new LinearGradient(0, pBitmap.getHeight(), 0,

           _NewBitmap.getHeight(), 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
      

      _Paint.setShader(shader); _Paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN)); _Canvas.drawRect(0, pBitmap.getHeight(), pBitmap.getWidth(),

           _NewBitmap.getHeight(), _Paint);
      

      return _NewBitmap; }

}</pre>

 本文由用戶 123bt 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!