Xamarin.ios 如何在Xamarin IOS Live Camera中添加OverlayView 我正在访问live camera,但我想在其上方添加一个覆盖层,以拍摄特定图片并将图片保存在覆盖层中 我的目标如下图所示

Xamarin.ios 如何在Xamarin IOS Live Camera中添加OverlayView 我正在访问live camera,但我想在其上方添加一个覆盖层,以拍摄特定图片并将图片保存在覆盖层中 我的目标如下图所示,xamarin.ios,cameraoverlayview,Xamarin.ios,Cameraoverlayview,您可以使用UIImagePickerController执行此操作 首先制作一个覆盖视图,如问题中所示 我相信您可以使用视图的Alpha属性获得灰色效果 您可以使用UIBezierPath创建该行 完成覆盖视图操作后,将其指定给UIImagePickerController的CameraOverlayView属性 这是一个粗略的例子 imagePicker = new UIImagePickerController(); // set our source to the c

您可以使用UIImagePickerController执行此操作

首先制作一个覆盖视图,如问题中所示

  • 我相信您可以使用视图的Alpha属性获得灰色效果
  • 您可以使用UIBezierPath创建该行
完成覆盖视图操作后,将其指定给UIImagePickerController的CameraOverlayView属性

这是一个粗略的例子

    imagePicker = new UIImagePickerController();

    // set our source to the camera
    imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;

    // set
    imagePicker.MediaTypes = new string[] { "public.image" };

    // show the camera controls
    imagePicker.ShowsCameraControls = true;

    // This is where you assign the view that you want to overlay   
    imagePicker.CameraOverlayView = new CameraOverlayView();

更新:

使用
CGImageCreateWithImageInRect
类获取图像的裁剪版本。传递摄影机覆盖的rect和摄影机拍摄的图片的图像引用,该类将返回摄影机覆盖的裁剪图像

这里有一个来自Objective C的示例,我相信您可以在Xamarin.iOS中执行类似的操作

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
// or use the UIImage wherever you like
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]]; 
CGImageRelease(imageRef);

我设法添加了CameraOverlayView,“允许用户在给定的矩形内拍照”


这是很有帮助的,我设法添加了一个自定义的矩形作为相机的覆盖,并允许用户在矩形内拍照。我希望图像采集器只拾取在“相机覆盖”内拍摄的照片矩形并忽略覆盖层外的部分图片,你能给我一些建议吗?有人能建议如何使用Camera2API在本机java中实现上述功能吗?
private UIImagePickerController _imagePicker;

private void OpenCameraAndTakePhoto() { 
    _imagePicker = new UIImagePickerController();
    _imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;
    _imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes(UIImagePickerControllerSourceType.Camera);
    _imagePicker.FinishedPickingMedia += Handle_FinishedPickingMedia;
    _imagePicker.Canceled += Handle_Canceled;
    _imagePicker.ShowsCameraControls = true;
    UIView view = new UIView(new CGRect(30, 200, 250, 120));
    view.Layer.BorderColor = UIColor.Blue.CGColor;
    view.Layer.BorderWidth = 3.0f;
    _imagePicker.CameraOverlayView = view;

    PresentModalViewController(_imagePicker, true);
}