Created
October 24, 2013 09:12
-
-
Save yaoxinghuo/7133835 to your computer and use it in GitHub Desktop.
Android Bitmap 图片裁剪成圆形
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 转换图片成圆形 | |
* | |
* @param bitmap | |
* 传入Bitmap对象 | |
* @return | |
*/ | |
public static Bitmap toRoundBitmap(Bitmap bitmap) { | |
if (bitmap == null) | |
return null; | |
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; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment