使用 Swift 捕获 iOS 相机图片


在 Swift 中捕获相机图片,我们可以使用 AVFoundation,它是 iOS SDK 中的一个框架,但我们应该尽量避免使用它,除非我们的相机应用程序需要大量自定义功能。在本例中,我们只捕获相机图片并在视图上显示。在本例中,我们将使用图像选择器而不是 AVFoundation。

首先,创建一个项目并在其故事板中的视图控制器上添加一个图像视图。在类中创建出口。现在,在 ViewController 类内部,使其符合以下协议:

class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate

之后,创建一个 objc 函数。

@objc func openCamera(){
}

现在,在你的 View did load 中,向你的视图控制器添加一个轻触手势识别器,当屏幕被轻触时,它应该调用 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 上运行它并捕获图片时,会产生以下结果。另外,请注意,此应用程序无法在模拟器上运行。

更新于: 2020年6月30日

3K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告