Zas*_*ssX 3 camera ios avcapturesession swift
所以我使用 AVCaptureSession 用前置摄像头拍照。我还从此会话中创建预览层以在屏幕上显示当前图像。
previewLayer = AVCaptureVideoPreviewLayer(session: session)
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
Run Code Online (Sandbox Code Playgroud)
一切都按其应有的方式进行。但现在我遇到了一个问题,因为我需要实现一个按钮来翻转/镜像(变换)此预览图层 - 这样用户就可以选择拍摄正常的自拍照或拍摄镜像的自拍照。
我已经尝试过转换 PreviewLayer 并且它有点有效。问题是,如果您旋转设备,预览图片会以另一种方式旋转,因为它已被变换。(在默认或任何其他相机应用程序中,图片随相机旋转)。任何人都知道如何实现这一目标?
镜像预览图层:(我尝试变换图层,甚至稍后查看,结果相同)。
@IBAction func mirrorCamera(_ sender: AnyObject) {
cameraMirrored = !cameraMirrored
if cameraMirrored {
// TRANSFORMING VIEW
self.videoPreviewView.transform = CGAffineTransform(scaleX: -1, y: 1);
// OR LAYER
self.previewLayer.transform = CATransform3DMakeScale(-1, 1, 1);
} else {
self.videoPreviewView.transform = CGAffineTransform(scaleX: 1, y: 1);
self.videoPreviewView.transform = CATransform3DMakeScale(1, 1, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
如今,如果直接使用mirrored预览层的属性,则会在运行时收到弃用警告。当前的方法是直接使用相机的连接。你必须做这样的事情(下面的代码不是真正的代码,属性名称可能会有所不同,但你明白了)
if (cameraPreviewLayer.connection.SupportsVideoMirroring) {
cameraPreviewLayer.connection.automaticallyAdjustsVideoMirroring = false
cameraPreviewLayer.connection.videoMirrored = true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4792 次 |
| 最近记录: |