1、将方形图片裁剪成圆形图片
private Bitmap createCircleImage(Bitmap bmp, int min) {
Bitmap result = Bitmap.createBitmap(min, min, Config.ARGB_8888);
Canvas canvas = new Canvas(result);
Paint paint = new Paint();
paint.setAntiAlias(true);
canvas.drawCircle(min / 2, min / 2, min / 2, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bmp, 0, 0, paint);
return result;
}
先通过canvas绘制一张min*min的底图,关键是通过paint.setXfermode设置模式,这里的模式有多中,但是我们这里只需要的是交叉的部分即可。
2、当然可以制作圆形,那也就可以绘制带圆角的矩形图片:
private Bitmap createRoundImage(Bitmap bmp) {
Bitmap result = Bitmap.createBitmap(mWidth, mHeight, Config.ARGB_8888);
Canvas canvas = new Canvas(result);
Paint paint = new Paint();
paint.setAntiAlias(true);
RectF rect = new RectF(0, 0, bmp.getWidth(), bmp.getHeight());
canvas.drawRoundRect(rect, mRadius, mRadius, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bmp, 0, 0, paint);
return result;
}
原理也是一样的,关键这里是drawRoundRect,最后取交叉部分即可。