Это кажется простой задачей, но это сводит меня с ума. Можно ли преобразовать 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.Это правда?
Просто чтобы прояснить: Я не хочу сохранять изображение для камеры.Я хочу сохранить прозрачный слой предварительного просмотра, наложенный поверх другого изображения, таким образом создавая прозрачность. И все же по какой-то причине я не могу заставить его работать.