/** |
* 转换图片成圆形 |
* @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; |
} |
中级程序员
by: Sauchye 发表于:2013-09-09 09:33:15 顶(1) | 踩(0) 回复
你的打包地 代码呢`
网友回复
回复神马 : 这只是一个代码片段啊,调用这个方法,传入Bitmap对象即可。
顶(1) 踩(0) 2013-09-10 14:12:14
回复评论