使用Swift从iOS相机捕获图片
要快速从相机中捕获图片,我们可以使用AVFoundation,它是iOSSDK中的框架,但是在相机应用程序中需要大量自定义功能之前,我们应尽量避免使用它。在此示例中,我们将仅从相机捕获图片并将其显示在视图上。在此示例中,我们将使用图像选择器代替AVFoundation。
首先,创建一个项目,并在情节提要中在其视图控制器上添加图像视图。在其类中创建插座。现在在ViewController类中使其符合-
class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate
之后,创建一个objc函数。
@objc func openCamera(){
}现在,在您的View中确实加载了,向您的ViewController中添加一个轻击手势识别器,当点击屏幕时,它应该调用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上运行它并捕获图像时,这就是产生的结果。另外,请注意,该应用程序不能在模拟器上运行。