Android矩形Bitmap转为圆形

	private Bitmap makeRoundCorner(Bitmap bitmap) 
	{ 
	  int width = bitmap.getWidth(); 
	  int height = bitmap.getHeight(); 
	  int left = 0, top = 0, right = width, bottom = height; 
	  float roundPx = height/2; 
	  if (width > height) { 
	    left = (width - height)/2; 
	    top = 0; 
	    right = left + height; 
	    bottom = height; 
	  } else if (height > width) { 
	    left = 0; 
	    top = (height - width)/2; 
	    right = width; 
	    bottom = top + width; 
	    roundPx = width/2; 
	  } 
	  
	  Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
	  Canvas canvas = new Canvas(output); 
	  Paint paint = new Paint(); 
	  Rect rect = new Rect(left, top, right, bottom); 
	  RectF rectF = new RectF(rect); 
	  
	  paint.setAntiAlias(true); 
	  canvas.drawARGB(0, 0, 0, 0); 
	  canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 
	  paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); 
	  canvas.drawBitmap(bitmap, rect, rect, paint); 
	  
//	  recycleBitmap(bitmap);
	  
	  return output; 
	} 


椭圆

	private Bitmap makeRoundCorner(Bitmap bitmap) 
	{ 
	  int width = bitmap.getWidth(); 
	  int height = (int) (bitmap.getHeight()); 	
	  int left = 0, top = 0, right = width, bottom = height; 
	  float roundPx = height/2; 
	  if (width > height) { 
	    left = (width - height)/2; 
	    top = 0; 
	    right = left + height; 
	    bottom = height; 
	  } else if (height > width) { 
	    left = 0; 
	    top = (height - width)/2; 
	    right = width; 
	    bottom = top + width; 
	    roundPx = width/2; 
	  } 
	  
	  Bitmap output = Bitmap.createBitmap(width, (int) (height*1.8f/*高宽比*/), Bitmap.Config.ARGB_8888); 
	  Canvas canvas = new Canvas(output); 
	  Paint paint = new Paint(); 
	  Rect rect = new Rect(left, top, right, bottom); 
	  Rect rect_output = new Rect(left, 0, right, output.getHeight()); 
	  
	  RectF rectF = new RectF(rect_output); 
	  Log.d("XX", "rect_output:"+rect_output.toShortString());
	  
	  paint.setAntiAlias(true); 
	  canvas.drawARGB(0, 0, 0, 0); 
	  canvas.drawRoundRect(rectF, roundPx, roundPx*1.8f/*高宽比*/, paint); 
	  paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); 
	  canvas.drawBitmap(bitmap, rect, rect_output, paint); 
	  
//	  recycleBitmap(bitmap);
	  
	  return output; 
	} 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值