5
我正在嘗試使用快速移動應用程序,並且我想使用前置攝像頭。 我使用AVFoundation並嘗試了一些代碼。但我無法設置前置縮放參數。可能嗎?對於後置攝像頭,一切都成功了。如何設置面向鏡頭的快速移動相機放大
我不想使用仿射變換。因爲它會降低圖像質量。那麼,我怎樣才能以編程方式設置這個參數呢?
謝謝。
我正在嘗試使用快速移動應用程序,並且我想使用前置攝像頭。 我使用AVFoundation並嘗試了一些代碼。但我無法設置前置縮放參數。可能嗎?對於後置攝像頭,一切都成功了。如何設置面向鏡頭的快速移動相機放大
我不想使用仿射變換。因爲它會降低圖像質量。那麼,我怎樣才能以編程方式設置這個參數呢?
謝謝。
您需要爲您的相機添加一個zoomFactor變量。
var zoomFactor: CGFloat = 1.0
接着定義一個函數變焦於與捏識別器一起使用。我假設你已經創建了一個前置捕獲設備和輸入。 frontDevice是我的相機上的可選捕捉設備。以下是我放大該設備的方法。
public func zoom(pinch: UIPinchGestureRecognizer) {
guard let device = frontDevice else { return }
func minMaxZoom(_ factor: CGFloat) -> CGFloat { return min(max(factor, 1.0), device.activeFormat.videoMaxZoomFactor) }
func update(scale factor: CGFloat) {
do {
try device.lockForConfiguration()
defer { device.unlockForConfiguration() }
device.videoZoomFactor = factor
} catch {
debugPrint(error)
}
}
let newScaleFactor = minMaxZoom(pinch.scale * zoomFactor)
switch pinch.state {
case .began: fallthrough
case .changed: update(scale: newScaleFactor)
case .ended:
zoomFactor = minMaxZoom(newScaleFactor)
update(scale: zoomFactor)
default: break
}
}
最後在一些視圖中添加一個pinch識別器。
let pgr = UIPinchGestureRecognizer(target: self, action: #selector(zoom))
view.addGestureRecognizer(pgr)