Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:创建一个圆形图像';我不适合拍大照片_Android_Android Canvas_Android Imageview_Android Bitmap - Fatal编程技术网

Android 安卓:创建一个圆形图像';我不适合拍大照片

Android 安卓:创建一个圆形图像';我不适合拍大照片,android,android-canvas,android-imageview,android-bitmap,Android,Android Canvas,Android Imageview,Android Bitmap,我使用以下代码创建圆角ImageView: 类圆形图像视图: public class RoundedImageView { public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);

我使用以下代码创建圆角ImageView:

类圆形图像视图:

public class RoundedImageView {
    public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {

        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());
        final RectF rectF = new RectF(rect);
        final float roundPx = pixels;

        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, rect, rect, paint);

        return output;
    }
}
我用它:

Bitmap bitmap = ((BitmapDrawable)viewHolder.imageUser.getDrawable()).getBitmap();
                        Bitmap bpRounded = RoundedImageView.getRoundedCornerBitmap(bitmap, 2000);
                        viewHolder.imageUser.setImageBitmap(bpRounded);
对于某些照片,结果并不好:


您知道问题出在哪里吗?

这取决于传递给函数的像素值。图像看起来像这样的原因是你的像素值太高,所以你最终得到的是你所拥有的东西(太小,它看起来像一个正常的/未舍入的矩形)。我尝试放置20000而不是2000,但我得到了相同的结果。我尝试在ImageView中添加
android:scaleType=“centerCrop”
。结果几乎没有什么不同。如何解决问题?请尝试较小的数字,而不是较大的数字。