gpt4 book ai didi

android - 如何从不同大小的图像生成统一大小的圆形位图

转载 作者:行者123 更新时间:2023-11-29 00:17:46 26 4
gpt4 key购买 nike

目前我正在使用这段代码..

            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;
}

它返回一个圆形位图,但图像的大小根据实际图像大小而有所不同。

应用程序图片示例..

enter image description here

第一张头像比第二张小。

请帮帮我..谢谢。

最佳答案

问题是有些图像很小,有些图像很大,这就是为什么您的位图从该方法得到的结果有时大/小。

解决方法:

您需要做的是首先将您的图像调整为默认大小(例如 300x300),以便所有图像都具有相同的尺寸,并在调整大小后将圆绘制到 Canvas 上.

您可以使用此方法将位图的大小调整为您想要的默认大小:

public static Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth)
{
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// create a matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// recreate the new Bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
return resizedBitmap;
}

并在您的 getCircularBitmap 方法中使用它:

public static Bitmap getCircularBitmap(Bitmap bitmap, int borderWidth) {
if (bitmap == null || bitmap.isRecycled()) {
return null;
}
Bitmap resizedBitmap = getResizedBitmap(bitmap, 300, 300); //pick you default size
.
.
.

关于android - 如何从不同大小的图像生成统一大小的圆形位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25440410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com