前言:IOS7之前是通过AVCaptureConnection的videoScaleAndCropFactor属性来实现图片拍摄的缩放,而且对预览层也不能实时更新,基于此,从IOS7开始视频缩放主要依靠AVCaptureDeviceFormat来实现。
重点:
IOS7为AVCaptureDevice提供了videoZoomFactor的属性,用于控制捕捉设备的缩放等级,最小值为1,最大值由捕捉设备的activeFormat值来确定即videoMaxZoomFactor。
在哪个点开始缩放图像需要由AVCaptureDeviceFormat中的videoZoomFactorUpscaleThreshold值来确定。
在对捕捉设备进行缩放操作前应先锁定设备进行配置,配置好以后再解锁。
配置代码如下:
if ([self.activeCamera lockForConfiguration:&error]) {
[self.activeCamera rampToVideoZoomFactor:zoomFactor // 2
withRate:THZoomRate];
[self.activeCamera unlockForConfiguration];
}
if ([self.activeCamera lockForConfiguration:&error]) { // 4
// Provide linear feel to zoom slider
CGFloat zoomFactor = pow([self maxZoomFactor], zoomValue); // 5
self.activeCamera.videoZoomFactor = zoomFactor;
[self.activeCamera unlockForConfiguration]; // 6
}
取消缩放操作代码如下:
if ([self.activeCamera lockForConfiguration:&error]) {
[self.activeCamera cancelVideoZoomRamp]; // 4
[self.activeCamera unlockForConfiguration];
}