2013-06-19 4 views
6

मैं एक छवि दृश्य में दिखाए जाने वाले यूआरएल से एक छवि लोड कर रहा हूं। मानक तरीका इस प्रकार है (जहां InputStream is यूआरएल से प्राप्त किया गया है) एक बिटमैप बनाने के लिए है:एंड्रॉइड: पूर्ण बिटमैप लोड किए बिना ImageView पर स्ट्रीमिंग छवि को ऑन-द-फ्लाई कैसे प्रस्तुत करें?

Bitmap bm = BitmapFactory.decodeStream(is); 

लेकिन मैं बड़ी छवियों के साथ काम कर रहा हूँ, और मैं पहले पूरी छवि है पिक्सेल प्रदर्शित करने शुरू करना चाहते हैं बिटमैप में लोड किया गया है यानी मैं छवि की प्रगतिशील प्रतिपादन प्राप्त करना चाहता हूं (वेब ​​ब्राउज़र में बड़ी छवियों को लोड करने के समान)। यदि छवि, उदाहरण के लिए, एक इंटरलस्ड पीएनजी है, तो यह मुझे पूर्ण छवि लोड होने की प्रतीक्षा करते समय उपयोगकर्ताओं को निम्न गुणवत्ता वाली छवि दिखाने की अनुमति देगी। असल में, मैं मैं इसे जैसे ही मैंने उन्हें पढ़ने imageView के बिटमैप करने के लिए पिक्सल रेंडर करने के लिए संशोधित कर सकते प्राप्त करने के लिए के रूप में http://www.codinghorror.com/blog/2005/12/progressive-image-rendering.html

मैं जानता हूँ कि अगर मैं एक PNG विकोडक को लागू कर सकता है, या एक खुला स्रोत कार्यान्वयन का उपयोग में दिखाया गया रेंडरिंग चाहते हैं,, लेकिन यह मेरे इरादे के लिए एक बड़े प्रयास की तरह दिखता है।

उत्तर

0

सरल प्रगतिशील प्राप्त प्राप्त प्रतिपादन: यह ट्रांसमिशन नेटवर्क परत (टीसीपी) पर विचार करके हासिल किया जाता है। क्रम में प्राप्त प्रत्येक पैकेट, एप्लिकेशन परत में वितरित किया जाता है जो तुरंत प्रदर्शित होता है। यदि आप इसे प्राप्त करना चाहते हैं, तो आपको अपने आवेदन में सॉकेट प्रोग्रामिंग के बारे में सोचना होगा।

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

अगर मुझे किसी भी अर्थ में गलत है तो कृपया मुझे सही करें।

+0

आपके पहले दृष्टिकोण के साथ मुख्य मुद्दा यह है कि छवि डेटा सीधे पिक्सेल में नहीं आता है, बल्कि इसके बजाय मैं छवि प्रारूप (उदाहरण के लिए पीएनजी) के अनुसार संपीड़ित और संगठित हूं। यहां तक ​​कि यदि मैं अलग-अलग पैकेट से निपटता हूं, तो बड़े प्रयास को उस डेटा को प्रतिपादन से पहले पिक्सेल रंग मानों में परिवर्तित करना होगा, जो कि छवि प्रारूप के लिए एक डिकोडर लिखने की मात्रा है (यह एक ओवरकिल होगा)। मैं एक मौजूदा विधि/पुस्तकालय की तलाश में था जो आसान होगा। आपका दूसरा दृष्टिकोण, ज़ाहिर है, रास्ता आसान है। अगर मैंने कुछ और काम नहीं किया है तो मैंने इसे अपने बैकअप विकल्प के रूप में रखा है :) –

0

फेसबुक के Freso परियोजना का प्रयास करें: http://frescolib.org/#streaming मुझे यकीन है कि क्या फ़ाइल स्वरूपों का समर्थन करता है नहीं कर रहा हूँ, लेकिन यह JPEGs कि उत्तरोत्तर इनकोडिंग किया गया है के प्रगतिशील प्रतिपादन का समर्थन करता है।

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