Как добавить OverlayView в Xamarin IOS Live Camera - PullRequest
1 голос
/ 17 мая 2019
  • Я получаю доступ к живой камере, но хочу добавить наложение поверх нее, чтобы сделать конкретное изображение и сохранить его в наложении.
  • Моя цель, как показано на рисунке ниже

enter image description here

Ответы [ 2 ]

2 голосов
/ 17 мая 2019

Вы можете использовать UIImagePickerController , чтобы сделать это.

Сначала создайте вид наложения, подобный показанному в вашем вопросе.

  • Я уверен, что выможно получить эффект серого с помощью свойства Alpha .
  • Вы можете создать линию, используя UIBezierPath

, когда вы закончите с оверлейным видом, затем назначьте его для CameraOverlayView свойство UIImagePickerController

Вот примерный пример.

    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);
1 голос
/ 17 мая 2019

Мне удалось добавить CameraOverlayView, «чтобы пользователь мог сделать снимок внутри данного прямоугольника»

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);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...