【发布时间】:2019-10-04 14:30:37
【问题描述】:
【问题讨论】:
-
有人可以建议如何使用 Camera2API 在本机 java 中实现上述功能吗?
标签: xamarin.ios cameraoverlayview
【问题讨论】:
标签: xamarin.ios cameraoverlayview
您可以使用 UIImagePickerController 来做到这一点。
首先制作一个类似于您的问题中所示的叠加视图。
当您完成覆盖视图后,将其分配给 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 类获取图像的裁剪版本。传递相机叠加层的矩形和相机拍摄的图片的图像参考,该类将返回相机叠加层覆盖的裁剪图像。
这是来自 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,“允许用户在给定的矩形内拍照”
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);
}
【讨论】: