2012-01-09 28 views
8

मैं एक छोटा एंड्रॉइड ऐप लिख रहा हूं जहां कोई उपयोगकर्ता कैमरे के लाइव पूर्वावलोकन के अंदर एक छवि रख सकता है और इसकी एक तस्वीर ले सकता है। ऐप फिर दो छवियों को उचित रूप से जोड़ देगा - यह सब ठीक काम कर रहा है।Android आकार पूर्वावलोकन आकार/अनुपात और वास्तविक SufaceView आकार के बीच अंतर कैसे संभालता है?

मुझे समझ में आता है कि आप Camera.getParameters() का उपयोग करके पूर्वावलोकन आकार प्राप्त/सेट कर सकते हैं, मुझे लगता है कि यह रीयलटाइम "कैमरा फ़ीड" के आकार से संबंधित है।

हालांकि, मेरे SurfaceView का आकार जहां कैमरा पूर्वावलोकन दिखाया गया है रिपोर्ट (और प्रयुक्त) पूर्वावलोकन आकार से अलग है। उदाहरण के लिए, एम्यूलेटर में मेरा उपलब्ध SurfaceView 360x215 होता है, जबकि पूर्वावलोकन आकार 320x240 है। फिर भी, संपूर्ण SurfaceView पूर्वावलोकन से भरा है।

लेकिन अंत में जेनरेट की गई तस्वीर (भी?) 320x240 है। आकार और पहलू अनुपात में इन मतभेदों के लिए एंड्रॉइड कैसे क्षतिपूर्ति करता है? क्या छवि काटा गया है?

या क्या मैं बस गलतफहमी समझ रहा हूं कि पूर्वावलोकन आकार क्या है - क्या यह जेनरेट की गई तस्वीरों के आकार से संबंधित है, या यह "रीयलटाइम पूर्वावलोकन" से संबंधित है जो SurfaceView पर अनुमानित है? क्या कोई गैर-मामूली कैमरा उदाहरण हैं जो इस से निपटते हैं?

मुझे यह जानने की ज़रूरत है कि आखिरकार तस्वीर में तस्वीर को सही ढंग से कॉपी/स्केल करने के लिए क्या परिवर्तन होता है, इसलिए ये प्रश्न।

+0

आप एक ही प्रश्न के लिए अपने उत्तर पर एक नज़र डालना चाहते हैं: http://stackoverflow.com/a/18159351/994834 – goto10

उत्तर

1

मैं इसे स्वयं समझने की कोशिश कर रहा हूं। यहाँ मैं अब तक पता चला है ..

  • सतह दृश्य mSurface नामक एक आंतरिक सतह जो वास्तव में कैमरा फ़ीड और एनकोडर चारे के रूप में प्रयोग किया जाता है। तो इस बफर को वास्तविक आकार होना चाहिए जिस पर आप रिकॉर्डिंग करना चाहते हैं।
  • आप setFixedSize विधि
  • अब का उपयोग करके इस mSurface का आकार सेट कर सकते SurfaceView के स्वतंत्र होने के लिए आप एक HD रिकॉर्डिंग 1280x760 संकल्प के लिए इतना mSurface जरूरतों को करने के लिए चाहते हो सकता है, लेकिन आप SurfaceView कि बड़ा नहीं हो सकता (मान लीजिए कि आप इसे एक डब्लूवीजीए स्क्रीन के साथ एक फोन पर चला रहे हैं)। तो आप 1280x760 की तुलना में एक छोटे रिज़ॉल्यूशन पर सेट करने का प्रयास करते हैं जो समान पहलू अनुपात को भी बनाए रखता है।
  • एंड्रॉयड अब, पर HD बफर पूर्वावलोकन संकल्प पाने के लिए एक आकार बदलने करता खेती नहीं किया जाता है, यह सिर्फ SurfaceView reoslutions
  • तो इस बिंदु पर दोनों mSurface और previewSize आप कैमरे के लिए सेट है कि का आकार बदलकर एक ही संकल्प है और इसलिए परिणामस्वरूप वीडियो रिकॉर्डिंग भी एक ही संकल्प का होगा।

कहा जा रहा है कि मैं अभी भी अपने वीजीए रिकॉर्डर को नेक्सस एस पर काम करने के लिए संघर्ष कर रहा हूं, यह एलजी महा डिवाइस पर काम कर रहा है। :)

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