完整代码:http://yuncode.net/code/c_5063fdf5ad80261
001 package com.demo;
002
003 import android.graphics.Bitmap;
004 import android.graphics.Bitmap.Config;
005 import android.graphics.Canvas;
006 import android.graphics.LinearGradient;
007 import android.graphics.Matrix;
008 import android.graphics.Paint;
009 import android.graphics.PorterDuff.Mode;
010 import android.graphics.PorterDuffXfermode;
011 import android.graphics.Rect;
012 import android.graphics.RectF;
013 import android.graphics.Shader.TileMode;
014
015 /**
016 * 图片处理工具类(缩放,圆角,倒影)
017 *
018 */
019 public class ImageUtils {
020 /**
021 * 图片缩放
022 *
023 * @param pBitmap
024 * @param pW
025 * @param pH
026 * @return
027 */
028 public static Bitmap zoomBitmap(Bitmap pBitmap, int pW, int pH) {
029
030 int _width = pBitmap.getWidth();// 获取原图的宽
031 int _heigth = pBitmap.getHeight();// 获取原图的高
032
033 // 获取缩放比
034 float _ScaleW = (float) pW / _width;
035 float _ScaleH = (float) pH / _heigth;
036
037 Matrix _Matrix = new Matrix();// 创建Matrix矩阵对象
038
039 _Matrix.setScale(_ScaleW, _ScaleH);// 设置宽高的缩放比
040
041 return Bitmap.createBitmap(pBitmap, 0, 0, _width, _heigth, _Matrix,
042 true);// 对截原图的0,0坐标到_width,_heigth的图片进行_Matrix处理
043 }
044
045 /**
046 * 图片圆角
047 *
048 * @param pBitmap
049 * @param pRoundpx
050 * @return
051 */
052 public static Bitmap RoundedCornerBitmap(Bitmap pBitmap, float pRoundpx) {
053
054 Bitmap _NewBitmap = Bitmap.createBitmap(pBitmap.getWidth(),
055 pBitmap.getHeight(), Config.ARGB_8888); // 创建图片画布大小
056 Canvas _Canvas = new Canvas(_NewBitmap); // 创建画布
057 _Canvas.drawARGB(0, 0, 0, 0); // 设置画布透明
058 Paint _Paint = new Paint(); // 创建画笔
059 _Paint.setAntiAlias(true); // 抗锯齿
060 _Paint.setColor(0xff000000);// 画笔颜色透明
061
062 // 画与原图片大小一致的圆角矩形
063 Rect _Rect = new Rect(0, 0, pBitmap.getWidth(), pBitmap.getHeight());
064 RectF _RectF = new RectF(_Rect);
065 _Canvas.drawRoundRect(_RectF, pRoundpx, pRoundpx, _Paint);
066
067 _Paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置下面张图片与上面张图片的交互模式
068 _Canvas.drawBitmap(pBitmap, _Rect, _Rect, _Paint);// 画原图到画布
069 return _NewBitmap;
070 }
071
072 /**
073 * 图片倒影
074 *
075 * @param pBitmap
076 * @return
077 */
078 public static Bitmap ReflectionImageWithOrigin(Bitmap pBitmap) {
079 // 创建等宽,高+高/5的画布
080 Bitmap _NewBitmap = Bitmap
081 .createBitmap(pBitmap.getWidth(),
082 pBitmap.getHeight() + pBitmap.getHeight() / 5,
083 Config.ARGB_8888);
084 Canvas _Canvas = new Canvas(_NewBitmap);
085
086 _Canvas.drawBitmap(pBitmap, 0, 0, null);// 画上原图
087
088 // 原图翻转,
089 Matrix _Matrix = new Matrix();
090 _Matrix.preScale(1, -1);
091 Bitmap _Bitmap = Bitmap.createBitmap(pBitmap, 0, 0, pBitmap.getWidth(),
092 pBitmap.getHeight(), _Matrix, true);
093
094 // 在剩余画布上画上翻转图
095 _Canvas.drawBitmap(_Bitmap, 0, pBitmap.getHeight(), null);
096 Paint _Paint = new Paint();
097
098 // 实现图片的渐变效果
099 LinearGradient shader = new LinearGradient(0, pBitmap.getHeight(), 0,
100 _NewBitmap.getHeight(), 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
101 _Paint.setShader(shader);
102 _Paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
103 _Canvas.drawRect(0, pBitmap.getHeight(), pBitmap.getWidth(),
104 _NewBitmap.getHeight(), _Paint);
105 return _NewBitmap;
106 }
107
108 }