iosiphoneswiftios-camera

Get focal length of iOS devices


In Swift, is there an easy way to find the focal length of the currently using camera? I am working on an iOS application and I need to use the focal length (in pixels or in mm) of iOS cameras. I found documentation from Apple about the focal length, but there is no information about how to obtain it. Here are two places I have visited:

I have also checked this question but it doesn't seem to solve my problem. I know that the focal length can be calculated using the Field of View as follows:

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

but again, there are no guides in computing that quantity.

Could you please help? Thanks.


Solution

  • This function is for those who have the same problem like me before. Basically, we'll have to take a picture, then use the captured picture to detect the focal length:

        // 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)")
        }