2011-11-03 20 views
11

मैं उपलब्ध कैमरा छवि आकार को पुनर्प्राप्त करने का प्रयास कर रहा हूं, इसलिए मैं कैमरे को अपने पसंदीदा छवि रिज़ॉल्यूशन में समायोजित करने में सक्षम हूं।एंड्रॉइड कैमरा समर्थित चित्र आकार

camera=Camera.open(); 
Parameters params = camera.getParameters(); 
List sizes = params.getSupportedPictureSizes(); 
for (int i=0;i<sizes.size();i++){ 
    Log.i("PictureSize", "Supported Size: " +sizes.get(i));   
} 

यह मैं निम्नलिखित उत्पादन है, जो मुझे यकीन है कि एक आकार में अनुवाद करने के लिए कैसे नहीं कर रहा हूँ देता है:

Android कैमरे आकार मैं निम्नलिखित कोड का उपयोग किया है प्राप्त करने के लिए।

"Supported size: [email protected]" 
"Supported size: [email protected]" 
"Supported size: [email protected]" 
"Supported size: [email protected]" 
"Supported size: [email protected]" 
"Supported size: [email protected]" 

अगर कोई मुझे आउटपुट समझने में मदद कर सकता है तो इससे मुझे बहुत मदद मिलेगी, धन्यवाद!

संपादित करें:

camera=Camera.open(); 
Parameters params = camera.getParameters(); 
List sizes = params.getSupportedPictureSizes(); 
Camera.Size result = null; 
    for (int i=0;i<sizes.size();i++){ 
     result = (Size) sizes.get(i); 
     Log.i("PictureSize", "Supported Size. Width: " + result.width + "height : " + result.height); 
    } 

उत्तर

11

getSupportedPictureSizes() रिटर्न Camera.Size के List वस्तुओं: मैं निम्न कार्य करके अपनी समस्या को सुलझाने समाप्त हो गया। Camera.Size में height और width डेटा सदस्य हैं जो आपको समर्थित चित्र आकार की ऊंचाई और चौड़ाई बताते हैं।

Here is a sample project के आकार से छोटे वाले सबसे बड़े क्षेत्र के साथ पूर्वावलोकन आकार खोजने के लिए संबंधित getSupportedPreviewSizes() का उपयोग करता है जो संबंधित getSupportedPreviewSizes() का उपयोग करता है।

+0

धन्यवाद अब मेरी समस्या हल हो गई है। किसी भी तरह से मुझे याद आया कि मुझे कैमरा प्राप्त होगा। GetSupportedPictureSizes() को कॉल करके ऑब्जेक्ट करें। नमूना परियोजना बहुत अच्छी थी। –

+0

कॉमन्सवेयर, आपकी प्रोजेक्ट में आप तस्वीर का आकार सेट नहीं कर रहे हैं - क्या मुझे तस्वीर के आकार को सेट करने के लिए भी जरूरी है? क्योंकि यह मुझे विभिन्न उपकरणों की एक विस्तृत श्रृंखला का समर्थन करने और पूर्वावलोकन और चित्र आकार को सिंक में रखने और पहलू अनुपात के कारण उन्हें बहुत छोटा होने की अनुमति देने में गंभीर परेशानी नहीं दे रहा है। – AgentKnopf

+0

@Zainodis: "आपकी प्रोजेक्ट में आप तस्वीर का आकार सेट नहीं कर रहे हैं" - कि विशेष नमूना एक तस्वीर नहीं लेता है। यह केवल पूर्वावलोकन सेट अप करता है। "क्या मुझे तस्वीर के आकार को सेट करना भी जरूरी है?" - यह संभव है कि एक डिफ़ॉल्ट है, लेकिन मैं हमेशा एक सेट करता हूं।"क्योंकि यह मुझे विभिन्न उपकरणों की एक विस्तृत श्रृंखला का समर्थन करने और पूर्वावलोकन और तस्वीर के आकार को सिंक में रखने और गंभीर अनुपात के कारण उन्हें बहुत छोटा होने की अनुमति देने में गंभीर परेशानी नहीं दे रहा है" - मुझे तुम्हारा दर्द महसूस होता है, क्योंकि मैं उनमें से कुछ से निपटता हूं मेरे सीडब्ल्यूएसी-कैमरा सहायक पुस्तकालय में। – CommonsWare

5
Camera camera = Camera.open(); 
Parameters params = camera.getParameters(); 
List sizes = params.getSupportedPictureSizes(); 
for (int i=0;i<sizes.size();i++) { 
    Log.i("PictureSize", "Supported Size: " +sizes.get(i).width + "height : " + sizes.get(i).height);  
} 

आप एक आकार वस्तु

+0

मैं इसे इस तरह से काम करने के लिए काफी नहीं मिल सका। मैंने इसके बजाए निम्न कार्य करना समाप्त कर दिया: कैमरा आकार चर घोषित किया और फिर प्रत्येक ऑब्जेक्ट को पकड़ने के लिए इसका इस्तेमाल किया और उस से चौड़ाई/ऊंचाई प्राप्त की। बिल्कुल यकीन नहीं है कि मैं इसे लागू करने में सक्षम क्यों नहीं हूं जैसा आपने सुझाव दिया था। –

+0

@ कृष्णाभद्र मुझे आश्चर्य है कि सूची आकार का पहला तत्व (आकार .get (0)), कैमरा दिया गया सबसे अच्छा चित्र आकार है? या बस एक यादृच्छिक अच्छा तस्वीर आकार कैमरा दिया? –

0

से ऊंचाई और चौड़ाई लेने के लिए यह मैं क्या कर समाप्त हो गया है। विधि params.getSupportedPictureSizes() प्रकार Camera.Size की सूची लौटाता है के बाद से, यह यह करने के लिए आसान था:

 List<Camera.Size> sizes = p.getSupportedPictureSizes(); 

     //searches for good picture quality 
     for(Camera.Size dimens : sizes){ 
      if(dimens.width <= 1024 && dimens.height <= 768){ 
       Debug.WriteLine("Width: " + dimens.width + " Height: " + dimens.height); 
       return dimens; 
      } 
     } 

     Debug.WriteLine("Width: " + sizes.get(sizes.size()-1).width + " Height: " + sizes.get(sizes.size()-1).height); 
     //returns the smallest camera size if worst comes to worst 
     return p.getSupportedPictureSizes().get(sizes.size()-1); 

आप एक List<Camera.Size> हो और किसी अन्य सूची है जैसे कि यह पार कर सकते हैं। Camera.Size ऑब्जेक्ट में width और height संपत्ति है।

अपने List घोषित करना इस तरह से लूप के अंदर Camera.Size टाइप करने के लिए सूची के प्रत्येक तत्व को कास्ट करने से बेहतर हो सकता है।

मेरे डिवाइस पर, यदि मैं sizes.get(0) पर देखता हूं, तो इसमें उच्चतम रिज़ॉल्यूशन होगा जबकि sizes.get(sizes.size()-1) सबसे कम है। मुझे यकीन नहीं है कि यह सभी उपकरणों में सच है, हालांकि। किसी के पास उस पर अंतर्दृष्टि है?

+1

मेरे सैमसंग गैलेक्सी नोट II पर, सबसे छोटा आकार इंडेक्स 0 है, ऊपर जा रहा है। तो यह सभी उपकरणों में समान नहीं है। –

+0

हाँ सैमसंग फोन कैमरे की बात करते समय काम करना मुश्किल है। अन्य मुद्दे भी हैं, जैसे कि छवियों को चारों ओर फ़्लिप किया जा रहा है (बिना एक्सिफ इंटरफेस के)। मैंने लोगों को यह पता लगाने की कोशिश की है कि डिवाइस सैमसंग डिवाइस है और उस पर आधारित कार्यों को चलाता है। क्या दर्द है, क्या मैं सही हूँ? – Nlinscott

+0

हां, यह सब बहुत दुखी है। खासकर लिखने वाले ड्राइवरों को ओएस का हिस्सा होना चाहिए। –

1

उदाहरण के लिए अपने अधिकतम आकार (1024 * 768) को अपनाने वाले आकार की खोज कैसे करें इसका एक उदाहरण यहां दिया गया है।

   List<Camera.Size> sizes = parameters.getSupportedPictureSizes(); 
       //searches for good picture quality 
       Camera.Size bestDimens = null; 
       for(Camera.Size dimens : sizes){ 
        if(dimens.width <= 1024 && dimens.height <= 768){ 
         if (bestDimens == null || (dimens.width > bestDimens.width && dimens.height > bestDimens.height)) { 
          bestDimens = dimens; 
         } 
        } 
       } 
       parameters.setPictureSize(bestDimens.width, bestDimens.height); 
       camera.setParameters(parameters); 
संबंधित मुद्दे