2013-10-08 11 views
5

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

यह अधिकतर समय काम करता है। लेकिन अक्सर मैं कुछ उपकरणों पर ठोकर खाता हूं जो मेरे द्वारा चुने गए पूर्वावलोकन आकार को पसंद नहीं करते हैं।

1) नेक्सस 4 ने मेरे द्वारा चुने गए पूर्वावलोकन आकारों में से एक के लिए छवि को कैप्चर नहीं किया। 2) सैमसंग एस 4 कैप्चर की गई छवियों के साथ लाइनों (शोर) का बैंड देता है।

तो मैं समझना चाहता था कि मैं मानक के खिलाफ कुछ कर रहा हूं या नहीं। यहां मेरे प्रश्न हैं: -

1) मैं कैमरे को खोलने के लिए सतह धारक का उपयोग कर रहा हूं। क्या कोई अन्य तरीका है कि मैं अपने ऐप में कैमरा हार्डवेयर का उपयोग कर सकता हूं।

2) मैं उपलब्ध आकारों की सूची से पूर्वावलोकन आकार का चयन कर रहा हूं। क्या कोई विशिष्ट है जिसे मुझे किसी भी आकार का चयन करने से पहले देखना चाहिए? आकार का चयन करने के लिए तर्क नीचे उल्लिखित है: -

private Camera.Size getBestPreviewSize(int width, int height) 
    { 
     List<Size> sizes = camera.getParameters().getSupportedPreviewSizes(); 
     if (sizes == null) return null; 

     Size optimalSize = null; 
     double minDiff = Double.MAX_VALUE; 

     int targetHeight = height; 
     int targetWidth = width; 

     int minWidthDiff = 0; 
     if (optimalSize == null) { 
      minDiff = Double.MAX_VALUE; 
      for (Size size : sizes) { 
       if (Math.abs(size.width - targetWidth) < minDiff) { 
        if(size.width > width) { 
         if (minWidthDiff == 0) { 
          minWidthDiff = size.width - width; 
          optimalSize = size; 
         } 
         else if (Math.abs(size.width - targetWidth) < minWidthDiff) { 
          minWidthDiff = size.width - width; 
          optimalSize = size; 

         } 
         minDiff = Math.abs(size.width - targetWidth); 
        } 
       } 
      } 
     } 

     if (optimalSize == null) { 
      minDiff = Double.MAX_VALUE; 
      for (Size size : sizes) { 
       if (Math.abs(size.height - targetHeight) < minDiff) { 
        optimalSize = size; 
        minDiff = Math.abs(size.height - targetHeight); 
       } 
      } 
     } 
     return optimalSize; 
    } 

इस पर कोई भी दिशा वास्तव में मदद करेगी।

धन्यवाद !!

सेंसर आकार कैमरा है कि हार्डवेयर से निर्धारित होता है एक देशी संकल्प और पहलू अनुपात: गगन

उत्तर

10

जब कैमरा के साथ काम करने के लिए आप कुछ अलग अलग आकार पर विचार करने के लिए है।

चित्र आकार इस छवि को जब आप कैमरा बता फ़ोटो लेने के लिए उत्पादन का आकार है। यदि यह मूल संकल्प के समान पहलू अनुपात है तो इसे सीधे उस से बढ़ाया जाएगा। यदि पहलू अनुपात अलग है तो यह मूल आकार से फसल हो जाएगा। मेरे अनुभव में, getSupportedPictureSizes द्वारा लौटाया गया सबसे बड़ा आकार कैमरा का मूल संकल्प है।

पूर्वावलोकन आकार इस छवि को पूर्वावलोकन कि परदे पर दिखाया गया है का आकार है। यह देशी आकार या तस्वीर के आकार की तुलना में एक अलग पहलू अनुपात हो सकता है, जिससे आगे की फसल हो सकती है।

स्क्रीन पर जो देखते हैं उसके बीच निकटतम मिलान प्राप्त करने के लिए और जब आप फोटो लेते हैं तो छवि का पूर्वावलोकन आकार के साथ एक पूर्वावलोकन आकार का चयन करने का प्रयास करें, जितना संभव हो सके चित्र आकार के पहलू अनुपात के लिए चुना है मैं आमतौर पर देशी आकार के जितना संभव हो उतना करीब पाने की कोशिश करता हूं।

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