[英]How to make a screenshot of OpenGl ES on top of the live preview camera in iOS (Augmented Reality app)?
[英]iOS screenshot live camera preview
我的应用程序(在scrollView中)具有实时摄像头,要进行过渡,我需要拍摄摄像头预览的屏幕截图并获取该图像,但是
drawHierarchy(in rect: CGRect,afterScreenUpdates afterUpdates: Bool)
方法没有帮助。 有没有办法在没有OpenGL的情况下实现这一目标。 请帮忙,因为我已经在搜索解决方案了几天。
UIGraphicsBeginImageContextWithOptions((self.getRectOfSceneInScrollView(index: self.selectedSceneIndex!).size), false, 0);
self.scrollView.drawHierarchy(in: CGRect.init(--some rect--), afterScreenUpdates: true)
let image:UIImage = UIGraphicsGetImageFromCurrentImageContext()!;
UIGraphicsEndImageContext()
更新:self.scrollView.layer.render(在:UIGraphicsGetCurrentContext()!)也无济于事
苹果在使用UIGraphicsGetImageFromCurrentImageContext
从我们的自定义摄像机视图捕获AVCaptureVideoPreviewLayer
方面存在一些限制。 如果我们有摄像机视图,则即使UIView
Snapchat方法也无法使用。
但是我们确实有一种变通办法来获得效果。 获取每个相机帧的图像缓冲区,并将其转换为UIImage
。 手动将图像添加到我们的屏幕截图中。 并不是那么简单,并且AFAIK这是最好的解决方法。 可以在SO解答中找到更多信息。可以在图形上下文中渲染AVCaptureVideoPreviewLayer吗?
func takeScreenshot(view: UIView) -> UIImageView {
UIGraphicsBeginImageContext(view.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
return UIImageView(image: image)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.