Это кажется простой задачей, но сводит меня с ума. Можно ли преобразовать UIView, содержащий AVCaptureVideoPreviewLayer в качестве подслоя, в изображение, которое нужно сохранить? Я хочу создать наложение дополненной реальности и иметь кнопку для сохранения изображения в фотопленке. Удерживая кнопку питания + клавишу «Домой», снимите снимок экрана с фотопленки, что означает, что вся моя логика захвата работает, И задача возможна. Но я не могу заставить его работать программно.
Я делаю предварительный просмотр изображения камеры в реальном времени с помощью AVCaptureVideoPreviewLayer. Все мои попытки визуализировать изображение терпят неудачу:
previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:captureSession];
//start the session, etc...
//this saves a white screen
- (IBAction)saveOverlay:(id)sender {
NSLog(@"saveOverlay");
UIGraphicsBeginImageContext(appDelegate.window.bounds.size);
UIGraphicsBeginImageContext(scrollView.frame.size);
[previewLayer.presentationLayer renderInContext:UIGraphicsGetCurrentContext()];
// [appDelegate.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(screenshot, self,
@selector(image:didFinishSavingWithError:contextInfo:), nil);
}
// это отображает все, ЗА ИСКЛЮЧЕНИЕМ слоя предварительного просмотра, который пуст.
[appDelegate.window.layer renderInContext:UIGraphicsGetCurrentContext()];
Я где-то читал, что это может быть связано с проблемами безопасности iPhone. Это правда?
Для ясности: Я не хочу сохранять изображение для камеры. Я хочу сохранить прозрачный слой предварительного просмотра, наложенный на другое изображение, таким образом создавая прозрачность. Но почему-то не могу заставить его работать.