在 Android 中将图片裁剪成圆形图片有多种方式,常见方法包括使用 BitmapShader 或 第三方库(如 Glide、Picasso) 来实现圆形图像显示。下面我分别介绍几种方式:
---
✅ 方法一:使用 Canvas 和 BitmapShader 自定义圆形 Bitmap
```java
public Bitmap getCircularBitmap(Bitmap bitmap) {
int size = Math.min(bitmap.getWidth(), bitmap.getHeight());
Bitmap output = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final Paint paint = new Paint();
paint.setAntiAlias(true);
BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
paint.setShader(shader);
float radius = size / 2f;
canvas.drawCircle(radius, radius, radius, paint);
return output;
}
```
调用示例:
```java
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image);
Bitmap circularBitmap = getCircularBitmap(originalBitmap);
imageView.setImageBitmap(circularBitmap);
```
---
✅ 方法二:使用 Glide 加载圆形图片(推荐)
```java
Glide.with(context)
.load(imageUrl)
.circleCrop() // 关键方法:裁剪为圆形
.into(imageView);
```
Glide 会自动将图片裁剪成圆形并加载到 ImageView 中,简单高效。
---
✅ 方法三:使用 XML 配合 Shape Drawable(仅用于展示圆形头像)
如果只是想把图片显示为圆形,可以使用 `ImageView` 配合 `android:scaleType="centerCrop"` 和圆形背景/剪裁框。
```xml
android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:scaleType="centerCrop" android:background="@drawable/circle_background" android:clipToOutline="true" android:src="@drawable/your_image" /> ``` circle_background.xml: ```xml android:shape="oval"> ``` (注意:clipToOutline 需要 API 21+) --- 想裁剪成圆形后保存? 可以使用 `Canvas` 绘制后的 `Bitmap` 然后用 `FileOutputStream` 保存即可。 --- 需要我帮你写个完整的裁剪并保存的例子吗?还是你是用 Kotlin?