2009-03-02 22 views
5

में कैमरा पूर्वावलोकन का एक छवि प्रस्तुत करना प्राप्त करना जब मैं आईफोन कैमरा मोडल व्यू पर छवियों में दृश्यों को बदलने के लिए मानक [view.layer renderInContext:UIGraphicsGetCurrentContext()]; विधि का उपयोग करता हूं, तो मुझे लगता है कि कैमरे के पूर्वावलोकन में काले रंग के नियंत्रण हैं।UIImagePickerController

किसी के पास इसका समाधान है? गति एक मुद्दा नहीं है।

उत्तर

0

दुर्भाग्य से यह संभव नहीं है। प्रदर्शन के लिए आईफोन एक यूआईवीव सतह के हिस्से के बजाय सीधे कैमरे के पूर्वावलोकन को स्क्रीन पर खींचने के लिए प्रत्यक्ष प्रतिपादन के कुछ रूपों का उपयोग करता है। जैसे ही आप कैमरे के दृश्य को "कैप्चर" करते हैं, आपको केवल यूआईवी व्यू तत्व मिलेंगे, पूर्वावलोकन छवि नहीं।

+0

मुझे लगता है कि यह संभव होना चाहिए, क्योंकि ऐपस्टोर में ऐप्स हैं जो स्पष्ट रूप से कैमरा पूर्वावलोकन विंडो (जैसे क्वाडकैम) के स्क्रीनशॉट लेते हैं। यदि आप UIGetScreenImage() को कॉल करते हैं तो आपको वास्तव में कैमरा पूर्वावलोकन की एक छवि मिलती है - लेकिन यह एक निजी एपीआई फ़ंक्शन है और इसका उपयोग नहीं किया जाना चाहिए। –

+0

हां, UIGetScreenImage वर्तमान फ्रेमबफर पकड़ लेता है। renderInContext निर्दिष्ट दृश्य के दृश्य पदानुक्रम को संदर्भ में खींचता है। ये अवधारणात्मक रूप से अलग-अलग चीजें हैं। –

+0

हाँ, मैं समझता हूं कि। कारण मैं पूछ रहा हूं कि "रोलैंडो" नाम से कोई व्यक्ति पोस्ट कर चुका है कि उसके पास कैमरा पूर्वावलोकन को छवि के रूप में सहेजने का तीसरा तरीका है, लेकिन दावा है कि वह एनडीए के कारण जानकारी का खुलासा नहीं कर सकता है। http://blog.airsource.co.uk/index.php/2008/11/11/views-of-uiimagepickercontroller/ –

4
एक प्रलेखित एपीआई से नहीं

संभव है, लेकिन संभव (Fwiw इस कारण है कि इसकी मुश्किल पर विंडोज/मैक कुछ फिल्म सॉफ्टवेयर स्क्रीनग्रेब के कारणों के समान है)। कैमरे की subviews में "PLCameraView" दृश्य हैं, फिर

CGImageRef img = (CGImageRef)[foundCameraView imageRef]; 

इस फोन छवि कि कैमरे धारण के लिए एक संदर्भ वापस आ जाएगी।

+0

क्या ऐप्पल ऐप को अस्वीकार कर देगा जो ऐसा करता है? –

2

आप iOS 4.0 में नया AVFoundation के सामान के साथ ऐसा कर सकते हैं की कोशिश कर सकते।

पूर्वावलोकन सहित समस्त स्क्रीन का वर्तमान कैप्चर प्राप्त करने के लिए आपको UIGetScreenImage() (UIImage लौटाता है) को कॉल करने में सक्षम होना चाहिए। इस तरह सभी बारकोड ऐप्स पहले काम करते थे। लेकिन माना जाता है कि ऐप्पल अब इसे अस्वीकार कर रहा है और केवल एवीफाउंडेशन तकनीक की अनुमति देता है - जो केवल 4.0 के तहत काम करता है।

पूरे कारण में भी एक मुद्दा है क्योंकि UIGetScreenImage() दस्तावेजीकृत एपीआई का हिस्सा नहीं है, लेकिन ऐप्पल ने इसका उपयोग करने के लिए एक विशिष्ट अपवाद बनाया है। ऐसा नहीं है कि वे वर्तमान ऐप्स खींच रहे हैं, लेकिन वे पुरानी तकनीक का उपयोग करने वाले नए सबमिशन (या अपडेट) की अनुमति नहीं दे रहे हैं।

ऐप्पल को ऐप्पल को मनाने के लिए ऐप्पल को मनाने के लिए कुछ लोगों पर कुछ लॉबिंग है, ताकि ऐप डेवलपर्स केवल आईओएस 3.x के लिए पुरानी तकनीक का उपयोग कर सकें, इसलिए यदि आप इसका उपयोग करना चाहते हैं तो डेवलपर संबंधों को ईमेल भेजें।

संबंधित मुद्दे