如何在Android中以六边形,八边形和圆形裁剪图像



我想裁剪六边形,八边形和圆形的形状。我使用了自定义图像视图类并在xml中用于显示图像。它适用于不同的形状。

现在我需要在下一个活动中以用户选择的形状裁剪图像。

我尝试了这个例子:在框架中遮罩(裁剪)图像 但是图像不适合形状,只有图像的一部分被遮罩。

我怎样才能做到这一点?

阅读Romain Guy的这篇关于如何制作圆角图像的博客文章。使用此技术,您可以创建各种形状。

这将如何工作?

如果你有预定义的形状数量,我建议你创建一个类,其中包含一些由路径定义的形状。现在,每当用户请求在 ImageView 上使用不同的形状时,您都可以创建一个位图,并从该类返回一个位图,并将其放在 ImageView 上。

例如,八边形将是这样的:

public static Bitmap drawOctagonShapedBitmap(Bitmap src) {
    Bitmap dst =  Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888);
    //Create an output as big as the actual bitmap.
    Path octagon = null; //Create an octagon shape, it should be big enough to crop enough of the bitmap.
    Canvas canvas = new Canvas(dst);
    Paint mPaint = new Paint();
    BitmapShader mBitmapShader = new BitmapShader(src, Shader.TileMode.CLAMP,
            Shader.TileMode.CLAMP);
    mPaint.setAntiAlias(true);
    mPaint.setShader(mBitmapShader);
    canvas.drawPath(octagon, mPaint);
    return dst;
}

最新更新