使用 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+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.