圖片處理Android工具類(縮放,圓角,倒影)
package com.demo;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>