据我所知,iOS中的相机在拍摄视频和照片时会自动连续调整曝光。
问题:
如何关闭相机的自动曝光?
在Swift代码中,如何将相机的曝光设置为"零"这样曝光对周围环境完全中性而不能补偿光线?
答案 0 :(得分:2)
您可以通过设置" AVCaptureExposureMode"来设置曝光模式。属性。 Documentation here
var exposureMode: AVCaptureDevice.ExposureMode { get set }
你必须考虑3件事。
1)使用" isExposureModeSupported"
检查设备是否实际支持此功能2)你必须锁定配置"在调整曝光之前。 Documentation here
3)通过设置ISO和持续时间来调整曝光。您无法将其设置为" 0"
ISO:
此属性通过a返回传感器对光的敏感度 增益值应用于信号。仅曝光持续时间值 支持minISO和maxISO之间。将导致更高的值 嘈杂的图像。无论如何,都可以随时读取属性值 曝光模式,但只能使用 setExposureModeCustom(duration:iso:completionHandler :)方法。
答案 1 :(得分:0)
如果仅需要最小,当前和最大曝光值,则可以使用以下内容:
快捷键5
import AVFoundation
enum Esposure {
case min, normal, max
func value(device: AVCaptureDevice) -> Float {
switch self {
case .min:
return device.activeFormat.minISO
case .normal:
return AVCaptureDevice.currentISO
case .max:
return device.activeFormat.maxISO
}
}
}
func set(exposure: Esposure) {
guard let device = AVCaptureDevice.default(for: AVMediaType.video) else { return }
if device.isExposureModeSupported(.custom) {
do{
try device.lockForConfiguration()
device.setExposureModeCustom(duration: AVCaptureDevice.currentExposureDuration, iso: exposure.value(device: device)) { (_) in
print("Done Esposure")
}
device.unlockForConfiguration()
}
catch{
print("ERROR: \(String(describing: error.localizedDescription))")
}
}
}