我正在尝试模拟在默认相机应用程序中看到的动画,在该动画中,相机取景器的快照被动画化到应用程序显示的角落。
拥有解决此问题的关键的AVCaptureVideoPreviewLayer对象对这些要求不是很开放:尝试使用..在新层中创建它的副本。
- (id)initWithLayer:(id)layer
..返回一个空层,没有图像快照,因此很显然这里有一些更深层次的魔术。
欢迎您提供线索/嘘声。
M.
最佳答案
面对相同的困境,只是角度略有不同。
以下是可能的解决方案,这些都不是IMO的最佳选择:
您可以将AVCaptureStillImageOutput和AVCaptureVideoDataOutput都添加到AVCaptureSession中。当将sessionPreset设置为AVCaptureSessionPresetHigh时,您将开始通过API获取帧,并且当您切换到AVCaptureSessionPresetPhoto时,您可以拍摄真实图像。因此,在拍摄照片之前,您可以切换到视频,获取一张照片,然后返回相机。需要特别注意的是,相机在摄像机和图片相机之间切换需要花费很长时间(几秒钟)。
另一个选择是仅使用摄像头输出(AVCaptureStillImageOutput),并使用UIGetScreenImage获取手机的屏幕截图。然后,您可以裁剪控件并仅保留图像。如果要在图像上显示UI控件,这将变得很复杂。另外,根据this帖子,Apple开始拒绝使用此功能的应用程序(一直很困难)。
除了这些,我还尝试了AVCaptureVideoPreviewLayer。 this帖子将UIView或CALayer保存到UIImage。但这都会产生清晰或白色的图像。我尝试访问该层,视图的层,超层,presentationLayer,modelLayer,但无济于事。我猜AVCaptureVideoPreviewLayer中的数据是非常内部的,并不是真正的常规层基础结构的一部分。
希望这可以帮助,
奥德
关于iphone - AVCaptureVideoPreviewLayer:拍摄快照,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3397899/