获取 iOS 台设备的焦距

Get focal length of iOS devices

在Swift中,有没有简单的方法可以找到当前使用的相机的焦距? 我正在开发 iOS 应用程序,我需要使用 iOS 相机的焦距(以像素或毫米为单位)。我从 Apple 找到了有关焦距的文档,但没有关于如何获取它的信息。以下是我去过的两个地方:

我也检查了this question,但它似乎并没有解决我的问题。 我知道可以使用视野计算焦距,如下所示:

focal_length_pixels = (image_diagonal_pixels/2)/tan(FOV/2)

但同样,没有计算该数量的指南。

你能帮忙吗? 谢谢。

您可以使用 MDLCamera class。首先你必须导入 class.

import ModelIO

然后像下面这样使用它

print("focal length: \(MDLCamera().focalLength)")

顺便说一下,你可以把它放在 AppDelegate class.

此功能适用于和我有同样问题的朋友。基本上,我们得先拍照,然后用拍到的照片来检测焦距:

    // delegate method for the image picker
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

        let metadata = info[UIImagePickerControllerMediaMetadata] as? NSDictionary
        let exifdata = metadata!["{Exif}"] as! NSDictionary

        // focal length
        let focalLength = exifdata["FocalLength"] as! Double

        print("Focal length \(focalLength)")
    }

我认为 avfoundation 的焦距没有任何 API 功能。 相反,您可以通过计算分辨率、以度为单位的视野来获得其他信息,例如镜头光圈、尺寸、百万像素。

camera.lensAperture

camera.activeFormat.videoFieldOfView

camera.activeFormat.formatDescription
{
    let dimensions=CMVideoFormatDescriptionGetDimensions(formatdescription)
}