我一直在网上搜索这个,但找不到任何帮助。
我想通过调用相机来捕获图像并想要裁剪它。但事情不是矩形裁剪(在图像中给出)工具,我需要一个圆形(第二个图像)。
注意:第一个图像显示 - 裁剪矩形区域,然后使用其他一些功能以圆形方式显示它。
而图像二显示 - 以圆形裁剪图像。
我在网上找到的只是使用这个矩形工具进行裁剪,然后以圆形视图显示图像。(但我想以圆形裁剪)
我在 onActivityResult 函数中所做的是-
case CROP_FROM_CAMERA:
Bundle extras = data.getExtras();
if (extras != null)
{
Bitmap photo = extras.getParcelable("data");
//this method convert the rectangular cropped image to circular display.
GraphicsUtil gu= new GraphicsUtil();
Bitmap output = gu.getCircleBitmap(photo,16);
mImageView.setImageBitmap(output);
}
File f = new File(mImageCaptureUri.getPath());
if (f.exists()) f.delete();
break;
GraphicsUtil 函数的代码如下 -
public Bitmap getCircleBitmap(Bitmap bitmap, int pixels) {
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xffff0000;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
paint.setDither(true);
paint.setFilterBitmap(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawOval(rectF, paint);
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth((float) 4);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
所以你可以看到。图像被裁剪为矩形,然后传递给以圆形方式显示的函数。
我希望该图像仅通过 CROP_FROM_CAMERA 意图以循环方式裁剪,而不使用 GraphicUtil 函数。