Это похоже на простую задачу, но это меня заводит. Можно ли преобразовать 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);
}
//это отображает все, EXCEPT для слоя предварительного просмотра, который пуст.
[appDelegate.window.layer renderInContext:UIGraphicsGetCurrentContext()];
Я где-то читал, что это может быть связано с проблемами безопасности iPhone. Это правда?
Просто чтобы быть ясным: Я не хочу сохранять изображение для камеры. Я хочу сохранить прозрачный слой предварительного просмотра, наложенный поверх другого изображения, тем самым создавая прозрачность. Но по какой-то причине я не могу заставить его работать.