目标是拍摄相机能够拍摄的最高分辨率的照片。
所选相机为 iPad 11" 第三代(带 M1)前置摄像头:全新 12MP TrueDepth 摄像头。 虽然此代码在 iPhone 12 mini 和我测试过的所有其他设备上确实拍摄了最高分辨率的照片,但在 iPad 11" 第三代上却不能:照片返回为 7MP,而不是拍摄 12MP 照片(3088x2316).
有人能发现我做错了什么吗?我唯一省略的代码是我知道可能很重要的事实是我也打开了元信息+深度传递(添加
AVCaptureMetadataOutput
和 AVCaptureDepthDataOutput
以及通常的 AVCaptureVideoDataOutput
)。令人沮丧的是,我没有 iPad 11" 第三代可供测试,我只能依靠帮助我调试此问题的用户。
非常感谢您的帮助!
self.session = AVCaptureSession.init()
self.session.sessionPreset = .photo
...
self.photoOutput = AVCapturePhotoOutput.init()
self.photoOutput.isHighResolutionCaptureEnabled = true
self.photoOutput.isLivePhotoCaptureEnabled = false
self.photoOutput.maxPhotoQualityPrioritization = .quality
...
let photoSettings = AVCapturePhotoSettings(format: [AVVideoCodecKey: AVVideoCodecType.jpeg, AVVideoCompressionPropertiesKey: [AVVideoQualityKey: 0.8]])
photoSettings.photoQualityPrioritization = .quality
photoSettings.isHighResolutionPhotoEnabled = true
photoSettings.isDepthDataDeliveryEnabled = true
photoSettings.isPortraitEffectsMatteDeliveryEnabled = true
... capturePhoto...
我得到了一位好心的苹果高级工程师的答复。这不是我想象的那样!
简短版本:相机传感器是 12MP,但它以 7MP 拍摄照片,因为几何上正确的中心部分是 7MP....传感器的外侧是 FaceTime Center Stage 的鱼眼,如果变焦,您可以看到以最广角视角呈现。相机应用程序将 7MP 照片升级为 12MP,但实际上它的细节是 7MP。