मैं फोटो कैप्चर को संभालने के लिए AVFoundation की प्रतिनिधि विधि को कॉल कर रहा हूं, लेकिन मुझे AVCapturePhoto को परिवर्तित करने में कठिनाई हो रही है जो इसे सही अभिविन्यास के साथ एक UIImage में उत्पन्न करती है। यद्यपि नीचे दिया गया दिनचर्या सफल है, लेकिन मुझे हमेशा एक सही उन्मुख UIImage (UIImage.imageOrientation = 3) मिलता है। UIImage (डेटा: छवि) का उपयोग करते समय मुझे पहले अभिविन्यास प्रदान करने का कोई तरीका नहीं है और पहले फोटो.cgImageReresentation() का उपयोग करने का प्रयास कर रहा है। TakeRetainedValue() भी मदद नहीं करता है। कृपया सहायता करें।सही अभिविन्यास के साथ AVCapturePhoto से UIImage कैसे उत्पन्न करें?
छवि अभिविन्यास यहां महत्वपूर्ण है क्योंकि परिणामी छवि को विजन फ्रेमवर्क वर्कफ़्लो को खिलाया जा रहा है।
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
// capture image finished
print("Image captured.")
if let imageData = photo.fileDataRepresentation() {
if let uiImage = UIImage(data: imageData){
// do stuff to UIImage
}
}
}
अद्यतन 1: पढ़ना एप्पल के Photo Capture Programming Guide (iOS11 के लिए पुराने हो चुके), मैं एक बात लगता है मैं गलत कर रहा था क्या जादू कर दिया: (
- हर कब्जा कॉल पर self.capturePhotoOutput .capturePhoto) किसी को फोटोऑटपुट ऑब्जेक्ट के साथ कनेक्शन सेट करना होगा और तस्वीर लेने के समय डिवाइस के अभिविन्यास से मेल खाने के लिए अपना अभिविन्यास अपडेट करना होगा। ऐसा करने के लिए, मैंने UIDeviceOrientation का एक विस्तार बनाया और इसे स्नैपफोटो() फ़ंक्शन पर इस्तेमाल किया जिसे मैंने कैप्चर रूटीन कॉल करने के लिए बनाया था और फ़िनिशप्रोसेसिंग फोटो प्रतिनिधि विधि को निष्पादित करने की प्रतीक्षा की थी। मैंने कोडों का स्नैपशॉट जोड़ा है क्योंकि कोड नमूना डिलीमीटर यहां उन्हें सही तरीके से प्रदर्शित नहीं कर रहे हैं।
अद्यतन 2 लिंक GitHub पर पूर्ण परियोजना के लिए: https://github.com/agu3rra/Out-Loud
दिलचस्प है, और संभवतः एक [बग की रिपोर्ट दर्ज करने के लिए] (http://bugreport.apple.com)। क्या यह अभिविन्यास को अनदेखा कर रहा है यदि आप उस डेटा को फ़ाइल में लिखते हैं और फ़ाइल-आधारित 'UIImage' प्रारंभकर्ता का उपयोग करते हैं? – rickster
स्नैपफोटो() दिनचर्या (अद्यतन 1) पर कनेक्शन कॉल जोड़ने के बाद, यह अब अभिविन्यास को अनदेखा नहीं कर रहा है, लेकिन यह मुझे UIImage I बनाने पर गलत अभिविन्यास मान वापस दे रहा है। आपके अभिविन्यास विस्तार के बारे में –
। ऐप्पल ने एवीकैम अपडेट किया है। एक समान एक्सटेंशन है। 'एक्सटेंशन UIDeviceOrientation { var videoOrientation: AVCaptureVideoOrientation? { स्विच स्वयं { मामले .portrait: वापसी .portrait मामले .portraitUpsideDown: वापसी .portraitUpsideDown मामले .landscapeLeft: वापसी .landscapeRight मामले .landscapeRight: वापसी .landscapeLeft डिफ़ॉल्ट: वापसी शून्य} } } ' –