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

淘气D孩子

淘气D孩子

2016-02-19 10:56

下面,图老师小编带您去了解一下Android裁剪图片为圆形图片的实现原理与代码,生活就是不断的发现新事物,get新技能~
以前在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;
}
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
Android裁剪图片为圆形图片的实现原理与代码

android书架效果实现原理与代码

编程语言 网络编程
android书架效果实现原理与代码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

android 大图片拖拽并缩放实现原理

编程语言 网络编程
android 大图片拖拽并缩放实现原理

Android在listview添加checkbox实现原理与代码

编程语言 网络编程
Android在listview添加checkbox实现原理与代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

android Setting中隐藏项实现原理与代码

编程语言 网络编程
android Setting中隐藏项实现原理与代码

Android 图片缩放与旋转的实现详解

编程语言 网络编程
Android 图片缩放与旋转的实现详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Windows添加删除的技巧

Windows添加删除的技巧

javascript编程起步(第五课)

javascript编程起步(第五课)
下拉加载更多内容 ↓