使用Swift从iOS相机捕获图片

要快速从相机中捕获图片,我们可以使用AVFoundation,它是iOS SDK中的框架,但是在相机应用程序中需要大量自定义功能之前,我们应尽量避免使用它。在此示例中,我们将仅从相机捕获图片并将其显示在视图上。在此示例中,我们将使用图像选择器代替AVFoundation。

首先,创建一个项目,并在情节提要中在其视图控制器上添加图像视图。在其类中创建插座。现在在ViewController类中使其符合-

class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate

之后,创建一个objc函数。

@objc func openCamera(){
}

现在,在您的View中确实加载了,向您的View Controller中添加一个轻击手势识别器,当点击屏幕时,它应该调用openCamera函数。

override func viewDidLoad() {
   super.viewDidLoad()
   let gesture = UITapGestureRecognizer(target: self, action: #selector(openCamera))
   self.view.addGestureRecognizer(gesture)
}

现在,在函数中添加以下代码行。

@objc func openCamera() {
   let imgPicker = UIImagePickerController()   imgPicker.delegate = self
   imgPicker.sourceType = .camera
   imgPicker.allowsEditing = false
   imgPicker.showsCameraControls = true
   self.present(imgPicker, animated: true, completion: nil)
}

完成上述步骤后,现在我们将实现UIImagePickerControllerDelegate的didFinishPickingMediaWithInfo方法,在此方法内部,我们将获得用户从相机捕获的图像。

func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey :
Any]) {
   if let img = info[UIImagePickerController.InfoKey.editedImage] as?
   UIImage {
         self.imgV.image = img
         self.dismiss(animated: true, completion: nil)
      }
      else {
         print("error")
      }
   }
}

现在,我们需要在info.plist中添加相机使用说明键,并说明为什么我们的应用程序要使用相机。当我们在iPhone上运行它并捕获图像时,这就是产生的结果。另外,请注意,该应用程序不能在模拟器上运行。