Как добавить 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);
}