- 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;
- }
- }
来源: http://www.phpxs.com/code/1002838/