【问题标题】:How to Crop Image in Hexagon,Octagon and in circle shape in Android?如何在 Android 中以六边形、八边形和圆形裁剪图像?
【发布时间】:2015-01-23 09:53:54
【问题描述】:

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

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

我试过这个例子: Masking(crop) image in frame 但图片不符合形状。只有部分图片被蒙版。

我怎样才能做到这一点?

【问题讨论】:

标签: android crop geometry shape


【解决方案1】:

阅读 Romain Guy 的 blog post,了解如何制作带圆角的图像。使用这种技术,您可以创建各种形状。

这将如何工作?

如果您有预定义数量的形状,我建议您创建一个包含几个由Paths 定义的形状的类。现在,当您的用户要求在 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;
}

【讨论】:

  • 路径八边形为空。我的应用程序崩溃了替换什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
相关资源
最近更新 更多