Как добавить OverlayView в Xamarin IOS Live Camera

  • Я получаю доступ к камере в реальном времени, но хочу добавить наложение поверх нее, чтобы сделать конкретное изображение и сохранить изображение в наложении.
  • Моя цель, как показано на картинке ниже

ht tps:https://stackru.com/images/f085a5741985fd9be8e3739e7aa3d0d6c755f4b4.png

2 ответа

Для этого вы можете использовать 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);

Мне удалось добавить 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);

}
Другие вопросы по тегам