发布于 2016-02-18 04:57:00 | 289 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Android移动端操作系统

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。


这个方法是根据传入的图片的高度(height)和宽度(width)决定的,如果是 width <= height时,则会裁剪高度,裁剪的区域是宽度不变高度从顶部到宽度width的长度
以前在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; 
} 


最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务