【问题标题】:zoom in and zoom out camera on pinch gesture swift在捏手势时放大和缩小相机
【发布时间】:2019-07-01 11:30:15
【问题描述】:

我在我的应用程序中使用前置摄像头。我希望在拍照时用户可以放大和缩小相机

我试过这段代码

let device = AVCaptureDevice.default(for: .video)
print(sender.scale)
let vZoomFactor = sender.scale * prevZoomFactor
if sender.state == .ended {
    prevZoomFactor = vZoomFactor >= 1 ? vZoomFactor : 1
}

if sender.state == .changed{
    do {
        try device!.lockForConfiguration()
        if (vZoomFactor <= device!.activeFormat.videoMaxZoomFactor) {
            device!.videoZoomFactor = max(1.0, min(vZoomFactor, device!.activeFormat.videoMaxZoomFactor))
            device?.unlockForConfiguration()
        } else {
            print("Unable to set videoZoom: (max \(device!.activeFormat.videoMaxZoomFactor), asked \(vZoomFactor))")
        }
    } catch {
        print("\(error.localizedDescription)")
    }
}

后置摄像头一切正常,但变焦不适用于前置摄像头。

【问题讨论】:

  • 我觉得,前置摄像头不支持放大/缩小功能。你试过 iPhone 的相机应用吗?
  • 是的,我检查了一些应用程序,如apps.apple.com/us/app/mirror/id431471943,它支持放大前置摄像头
  • 好的,你调试了不同模式下的缩放系数值吗?什么导致 if 条件失败?
  • 是的,我什么都没做。实际上,当我切换到后置凸轮时,它工作正常,当我切换到前部代码工作但缩放不应用时

标签: swift uigesturerecognizer avcapturesession avcapturedevice


【解决方案1】:

好吧,在这段代码上花了几个小时后,我发现了我犯错误的地方。

let device = AVCaptureDevice.default(for: .video)

默认情况下,这将获得后置摄像头并完美运行,但是当我将其切换到前置摄像头时,直到将其视为后置摄像头,所以我只是添加了一个条件

    if  currentcam == frontcam {
      let device = frontcam
      //did other stuff for zooimng
     } 

   else {
     let device = AVCaptureDevice.default(for: .video)
     //did other stuff for zooimng
  }

这对我来说很好用

【讨论】:

    猜你喜欢
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    相关资源
    最近更新 更多