UIImagePickerController के साथ कैमरे से फोटो कैप्चर करना
Swift में कैमरे से तस्वीरें कैप्चर करने के लिए हम AVFoundation का उपयोग कर सकते हैं जो iOS SDK में एक फ्रेमवर्क है, लेकिन जब तक हमें अपने कैमरा एप्लिकेशन में बहुत सारे कस्टम फीचर्स की आवश्यकता न हो, तब तक इससे बचना चाहिए। इस उदाहरण में, हम केवल कैमरे से एक तस्वीर कैप्चर करेंगे और इसे व्यू पर प्रदर्शित करेंगे। हम इस उदाहरण में AVFoundation के बजाय इमेज पिकर का उपयोग करेंगे।
सेटअप:
- एक प्रोजेक्ट बनाएं और स्टोरीबोर्ड में इसके व्यू कंट्रोलर पर एक इमेज व्यू जोड़ें। इसकी क्लास में आउटलेट बनाएं।
- अब ViewController क्लास के अंदर इसे अनुरूप बनाएं:
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate - एक @objc फंक्शन बनाएं:
@objc func openCamera(){ } - अपने viewDidLoad में, अपने व्यू कंट्रोलर पर एक टैप जेस्चर रिकॉग्नाइजर जोड़ें, जो स्क्रीन टैप होने पर openCamera फंक्शन को कॉल करे।
override func viewDidLoad() {
super.viewDidLoad()
let gesture = UITapGestureRecognizer(target: self, action: #selector(openCamera))
self.view.addGestureRecognizer(gesture)
}
openCamera फंक्शन में निम्नलिखित लाइनें जोड़ें:
@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 पर चलाते हैं और इमेज कैप्चर करते हैं, तो यह परिणाम उत्पन्न होता है। ध्यान दें कि यह एप्लिकेशन सिम्युलेटर पर नहीं चलाया जा सकता।
