iOS开发解决Pro/Pro Max近距离拍照画面模糊的问题

苹果手机部分机型支持微距拍摄,这些机型使用超广角镜头可以清晰的拍摄最近距离2厘米的微距照片和视频。目前支持微距拍照的机型包括iPhone 13 Pro、iPhone 13 Pro Max、iPhone 14 Pro和iPhone 14 Pro Max、iPhone 15 Pro和iPhone 15 Pro Max。
相应的使用自定义相机的 APP 要实现微距拍摄的功能,就需要首先搜索到支持微距的摄像设备,才能获取到微距拍摄的能力。
简而言之,搜索设备顺序可设为:

@[AVCaptureDeviceTypeBuiltInTripleCamera,AVCaptureDeviceTypeBuiltInDualWideCamera,AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInDualCamera];

详细代码如下:

- (AVCaptureDevice *)getCameraDeviceWithPosition:(AVCaptureDevicePosition )position {
    NSArray<AVCaptureDeviceType> *deviceTypes = @[AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInDualCamera];//设备类型:广角镜头、双镜头
    if (@available(iOS 13.0, *)) {
        // 数组成员的顺序,决定搜索设备的顺序,不要随意调整。
        deviceTypes = @[AVCaptureDeviceTypeBuiltInTripleCamera,AVCaptureDeviceTypeBuiltInDualWideCamera,AVCaptureDeviceTypeBuiltInWideAngleCamera, AVCaptureDeviceTypeBuiltInDualCamera];
    }
    AVCaptureDeviceDiscoverySession *session = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:deviceTypes mediaType:AVMediaTypeVideo position:position];
    for (AVCaptureDevice *camera in session.devices) {
        if ([camera position] == position) {
            return camera;
        }
    }
    return nil;
}

修改默认焦距

支持微距的设备,默认的焦距是 0.5x,画面囊括的内容较多。期望将焦距改成 1x,与微信保持一致。修改方法如下:

AVCaptureDevice *device = [self getCameraDeviceWithPosition:position];
self.videoInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
if (@available(iOS 13.0, *)) {
    NSArray *factors = [self.videoInput.device virtualDeviceSwitchOverVideoZoomFactors];
    if (factors.count) {
        [self.videoInput.device lockForConfiguration:nil];
        [self.videoInput.device setVideoZoomFactor:2];
        [self.videoInput.device unlockForConfiguration];
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容