【发布时间】:2014-08-22 05:55:04
【问题描述】:
目前我正在使用此代码..
public static Bitmap getCircularBitmap(Bitmap bitmap, int borderWidth) {
if (bitmap == null || bitmap.isRecycled()) {
return null;
}
int width = bitmap.getWidth() + borderWidth;
int height = bitmap.getHeight() + borderWidth;
Bitmap canvasBitmap = Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShader(shader);
Canvas canvas = new Canvas(canvasBitmap);
float radius = width > height ? ((float) height) / 2f: ((float) width) / 2f;
canvas.drawCircle(width / 2, height / 2, radius, paint);
paint.setShader(null);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.WHITE);
paint.setStrokeWidth(borderWidth);
canvas.drawCircle(width / 2, height / 2, radius - borderWidth / 2, paint);
return canvasBitmap;
}
它返回一个圆形位图,但图像的大小会根据实际图像大小而有所不同。
应用程序的示例图像..
第一个个人资料图片比第二个小。
请帮帮我.. 谢谢。
【问题讨论】:
-
保持
radius的固定大小 -
将你的代码在最后一次绘制 Circle radius - borderWidth / 2 更改为 radius + borderWidth / 2。
-
@Divyang Metalia 它不工作。
-
@Apoorv 我试图修复半径,但这也不起作用。
-
@Ankit 你能发布一张图片吗?你希望它是什么样子的
标签: android image-processing canvas bitmap