当前位置: 移动技术网 > 移动技术>移动开发>Android > Android裁剪图片为圆形图片的实现原理与代码

Android裁剪图片为圆形图片的实现原理与代码

2019年07月24日  | 移动技术网移动技术  | 我要评论
以前在eoe论坛中找过裁剪图片为圆形图片的方法,但是效果都不是很理想,这几天因为公司业务的要求,需要对头像进行裁剪以圆形的方式显示,这个方法是根据传入的图片的高度(height)和宽度(width)决定的,如果是 width <= height时,则会裁剪高度,裁剪的区域是宽度不变高度从顶部到宽度width的长度;如果 width > height,则会裁剪宽度,裁剪的区域是高度不变,宽度是取的图片宽度的中心区域,不过不同的业务需求,对裁剪图片要求不一样,可以根据业务的需求来调整裁剪的区域。

好了,不多说了,直接上代码
复制代码 代码如下:

/**
* 转换图片成圆形
* @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;
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网