/** * 将图片的四角圆化 * @param bitmap 原图 * @param roundPixels 圆滑率 * @param half 是否截取半截 * @return */ public static Bitmap getRoundCornerImage(Bitmap bitmap, int roundPixels,int half) { int width=bitmap.getWidth(); int height=bitmap.getHeight(); //创建一个和原始图片一样大小位图 Bitmap roundConcerImage = Bitmap.createBitmap(width,height, Config.ARGB_8888); //创建带有位图roundConcerImage的画布 Canvas canvas = new Canvas(roundConcerImage); //创建画笔 Paint paint = new Paint(); //创建一个和原始图片一样大小的矩形 Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); RectF rectF = new RectF(rect); // 去锯齿 paint.setAntiAlias(true); //画一个和原始图片一样大小的圆角矩形 canvas.drawRoundRect(rectF, roundPixels, roundPixels , paint); //设置相交模式 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); //把图片画到矩形去 canvas.drawBitmap(bitmap, null, rect, paint); switch(half){ case HalfType.LEFT: return Bitmap.createBitmap(roundConcerImage, 0, 0, width/2, height); case HalfType.RIGHT: return Bitmap.createBitmap(roundConcerImage, width/2, 0, width/2, height); case HalfType.TOP: return Bitmap.createBitmap(roundConcerImage, 0, 0, width, height/2); case HalfType.BOTTOM: return Bitmap.createBitmap(roundConcerImage, 0, height/2, width, height/2); case HalfType.NONE: return roundConcerImage; default: return roundConcerImage; } }
剪裁圆形图片
/** * 转换图片成圆形 * @param bitmap 传入Bitmap对象 * @return */ public Bitmap toRoundBitmap(Bitmap bitmap) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); float roundPx; float left,top,right,bottom,dst_left,dst_top,dst_right,dst_bottom; if (width <= height) { roundPx = width / 2; top = 0; bottom = width; left = 0; right = width; height = width; dst_left = 0; dst_top = 0; dst_right = width; dst_bottom = width; } else { roundPx = height / 2; float clip = (width - height) / 2; left = clip; right = width - clip; top = 0; bottom = height; width = height; dst_left = 0; dst_top = 0; dst_right = height; dst_bottom = height; } Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Paint paint = new Paint(); final Rect src = new Rect((int)left, (int)top, (int)right, (int)bottom); final Rect dst = new Rect((int)dst_left, (int)dst_top, (int)dst_right, (int)dst_bottom); final RectF rectF = new RectF(dst); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(bitmap, src, dst, paint); return output; }