Created
September 13, 2016 11:38
-
-
Save absentm/e555ebc64d22b45e8cb68d9c1586c651 to your computer and use it in GitHub Desktop.
This file contains 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) { | |
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; | |
} | |
/** | |
* to圆角Bitmap | |
* @param bitmap | |
* @return | |
*/ | |
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx) { | |
try { | |
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), | |
bitmap.getHeight(), Config.ARGB_8888); | |
Canvas canvas = new Canvas(output); | |
final int color = 0xff424242;// 颜色值(0xff---alpha) | |
final Paint paint = new Paint(); | |
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); | |
final RectF rectF = new RectF(rect);// Rect是使用int类型作为数值,RectF是使用float类型作为数值 | |
// --------抗锯齿-------// | |
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)); | |
final Rect src = new Rect(0, 0, bitmap.getWidth(), | |
bitmap.getHeight()); | |
canvas.drawBitmap(bitmap, null, rect, paint); | |
return output; | |
} catch (Exception e) { | |
e.printStackTrace(); | |
return null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment