图片形状圆角

一定要先转换成PNG格式的否则会不透明


1
/** 2 * 方形转换图片成圆形 3 * 4 * @param bitmap 5 * 传入Bitmap对象 6 * @return 7 */ 8 public Bitmap toRoundBitmap(Bitmap bitmap) { 9 int width = bitmap.getWidth(); 10 int height = bitmap.getHeight(); 11 float roundPx; 12 float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom; 13 if (width <= height) { 14 roundPx = width / 2; 15 left = 0; 16 top = 0; 17 right = width; 18 bottom = width; 19 height = width; 20 dst_left = 0; 21 dst_top = 0; 22 dst_right = width; 23 dst_bottom = width; 24 } else { 25 roundPx = height / 2; 26 float clip = (width - height) / 2; 27 left = clip; 28 right = width - clip; 29 top = 0; 30 bottom = height; 31 width = height; 32 dst_left = 0; 33 dst_top = 0; 34 dst_right = height; 35 dst_bottom = height; 36 } 37 38 Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888); 39 Canvas canvas = new Canvas(output); 40 41 final int color = 0xff424242; 42 final Paint paint = new Paint(); 43 final Rect src = new Rect((int) left, (int) top, (int) right, 44 (int) bottom); 45 final Rect dst = new Rect((int) dst_left, (int) dst_top, 46 (int) dst_right, (int) dst_bottom); 47 final RectF rectF = new RectF(dst); 48 49 paint.setAntiAlias(true);// 设置画笔无锯齿 50 51 canvas.drawARGB(0, 0, 0, 0); // 填充整个Canvas 52 paint.setColor(color); 53 54 // 以下有两种方法画圆,drawRounRect和drawCircle 55 // canvas.drawRoundRect(rectF, roundPx, roundPx, paint);// 56 // 画圆角矩形,第一个参数为图形显示区域,第二个参数和第三个参数分别是水平圆角半径和垂直圆角半径。 57 canvas.drawCircle(roundPx, roundPx, roundPx, paint); 58 59 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));// 设置两张图片相交时的模式,参考http://trylovecatch.iteye.com/blog/1189452 60 canvas.drawBitmap(bitmap, src, dst, paint); // 以Mode.SRC_IN模式合并bitmap和已经draw了的Circle 61 62 return output; 63 }

 

 1 // 矩形将图片的四角圆化
 2     public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
 3         Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
 4                 bitmap.getHeight(), Config.ARGB_8888);
 5         // 得到画布
 6         Canvas canvas = new Canvas(output);
 7         // 将画布的四角圆化
 8         final int color = Color.RED;
 9         final Paint paint = new Paint();
10         // 得到与图像相同大小的区域 由构造的四个值决定区域的位置以及大小
11         final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
12         final RectF rectF = new RectF(rect);
13         // 值越大角度越明显
14         final float roundPx = 30;
15         paint.setAntiAlias(true);
16         canvas.drawARGB(0, 0, 0, 0);
17         paint.setColor(color);
18         // drawRoundRect的第2,3个参数一样则画的是正圆的一角,如果数值不同则是椭圆的一角
19         canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
20         paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
21         canvas.drawBitmap(bitmap, rect, rect, paint);
22         return output;
23     }

 

posted @ 2014-11-04 20:05  最重要的小事  阅读(444)  评论(0编辑  收藏  举报