我有一个位图,我想从这个位图中裁剪出一个圆形区域.圆圈外的所有像素都应该是透明的.我该怎么做?

在此处输入图像描述

推荐答案

经过长时间的头脑风暴,我找到了解决办法

public Bitmap getCroppedBitmap(Bitmap bitmap) {
    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
            bitmap.getHeight(), Config.ARGB_8888);
    Canvas canvas = new Canvas(output);

    final int color = 0xff424242;
    final Paint paint = new Paint();
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());

    paint.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    paint.setColor(color);
    // canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
    canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2,
            bitmap.getWidth() / 2, paint);
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
    canvas.drawBitmap(bitmap, rect, rect, paint);
    //Bitmap _bmp = Bitmap.createScaledBitmap(output, 60, 60, false);
    //return _bmp;
    return output;
}

Android相关问答推荐

Android 14无法删除已配置的文件

无法在Jetpack Compose中显示Admob原生广告

约束布局:垂直链中的视图应将内容包裹到空间的1/3

这款应用与最新版本的Android不兼容.在Android 14中

Android:微调:在代码中设置ArrayAdapter不希望调用On ItemSelected,仅当用户单击微调时调用

登录方法显示为空列表,即使它显示的是Firebase身份验证控制台

Android可绘制边框删除底线

在Android 14/SDK 34中使用RegisterReceiver的正确方式是什么?

使用RecycleView和Diffutils时从列表中删除项目时出现问题

SDK 33 的问题 - 面向 S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

Play store 的 Play 完整性与 Firebase 应用判断 Play 完整性

当我想使用例如 material3 时,为什么我需要添加对 material 的依赖?底部导航?

如何在 Jetpack Compose 中处理水平滚动手势和变换手势

如何仅使用您的 Android 应用程序定位平板电脑?

将 CircularProgressIndicator 添加到按钮而不增加其高度

获取 ArithmeticException:除以零,但我没有在任何地方除以零

AttributionSource 需要 android.permission.BLUETOOTH_SCAN 权限的问题

在 Jetpack Compose 中包装内容

我的 React Native 在 11 月 4 日之前运行良好,但现在在运行 yarn android 时抛出异常

记住或不记得derivedStateOf