Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

จับภาพจากกล้อง iOS โดยใช้ Swift


ในการจับภาพจากกล้องอย่างรวดเร็ว เราสามารถใช้ AVFoundation ซึ่งเป็นเฟรมเวิร์กใน iOS SDK แต่เราควรพยายามหลีกเลี่ยงการใช้จนกว่าเราจะต้องการคุณสมบัติที่กำหนดเองจำนวนมากในแอปพลิเคชันกล้องของเรา ในตัวอย่างนี้ เราจะจับภาพจากกล้องและแสดงในมุมมองเท่านั้น เราจะใช้เครื่องมือเลือกรูปภาพในตัวอย่างนี้แทน AVFoundation

ขั้นแรก สร้างโครงการและเพิ่มมุมมองรูปภาพบนตัวควบคุมมุมมองในกระดานเรื่องราว สร้างทางออกในระดับเดียวกัน ตอนนี้ในคลาส ViewController สอดคล้องกับ -

class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate

หลังจากนั้นสร้างฟังก์ชัน objc

@objc func openCamera(){
}

ตอนนี้โหลดใน View ของคุณแล้ว ให้เพิ่มตัวจดจำท่าทางการแตะไปยังตัวควบคุมการดูของคุณ ซึ่งควรเรียกใช้ฟังก์ชัน 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)
}

เมื่อคุณทำตามขั้นตอนข้างต้นแล้ว เราจะใช้เมธอด didFinishPickingMediaWithInfo ของ UIImagePickerControllerDelegate และในวิธีนี้ เราจะได้ภาพที่ผู้ใช้ถ่ายจากกล้อง

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 และถ่ายภาพ นี่คือผลลัพธ์ที่ได้ นอกจากนี้ โปรดทราบว่าแอปพลิเคชันนี้ไม่สามารถเรียกใช้บนเครื่องจำลองได้

จับภาพจากกล้อง iOS โดยใช้ Swift