2014-05-23 4 views
14

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

वे यह कैसे करते हैं? जब उपयोगकर्ता हमारे सर्वर से छवियों को डाउनलोड करते हैं तो मैं वही प्रभाव प्राप्त करना चाहता हूं। मुझे यकीन नहीं है कि वे कुछ सर्वर-साइड इमेज प्रोसेसिंग कर रहे हैं, या एंड्रॉइड एसडीके में एक अंतर्निहित सुविधा है जो यह कर सकती है।

मान लें कि उपयोगकर्ता 4 एमबी की छवि का अनुरोध करता है। लगभग तुरंत वह डाउनलोड पर क्लिक करता है, स्क्रीन पर एक धुंधला थंबनेल स्क्रीन पर दिखाई देगा और उस पर स्थिति संकेतक डाउनलोड करेगा। मैं मुख्य रूप से दिलचस्पी लेता हूं कि छवि पूर्वावलोकन को इतनी तेज़ी से कैसे प्राप्त करें, सचमुच 1 सेकंड के मामले में (तत्काल होने जैसा लगता है)।

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

उत्तर

12

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

अद्यतन: अब आप अपने सर्वर को दो अलग-अलग छवियों को स्टोर किए बिना समान प्रभाव प्राप्त करने के लिए प्रगतिशील जेपीजी जैसी तकनीक का उपयोग कर सकते हैं। प्रोग्रेसिव जेपीजी मूल रूप से एक छवि के पहले बाइट्स में बहुत कम गुणवत्ता वाली छवि को एन्कोड करते हैं, और फिर जब छवि गुणवत्ता को लोड करती रहती है तो गुणवत्ता में सुधार होता है। यह सटीक प्रभाव नहीं हो सकता है जिसे आप ढूंढ रहे हैं, लेकिन पूर्ण आकार की छवि में लोड करते समय यह एक त्वरित निम्न गुणवत्ता पूर्वावलोकन दिखाने में सक्षम होना चाहिए। वर्तमान में एंड्रॉइड पर इन्हें लोड करने का एकमात्र तरीका Facebook's Fresco library है।

+1

तो सर्वर को एक संदर्भ के लिए दो छवियों को स्टोर करना होगा? – EdmDroid

+0

आम तौर पर आपके पास दो अलग-अलग यूआरएल होते हैं, उदाहरण के लिए www.example.com/images/img1.png बनाम www.example.com/images/img1_thumb.png। लेकिन हाँ सर्वर को मूल और थंबनेल को स्टोर करने या आवश्यकता होने पर थंबनेल जेनरेट करने की आवश्यकता होगी। – Falkon

+0

ठीक है इसे @ फ़ॉकन – EdmDroid

6

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

+0

मुझे पता नहीं है कि आपका उत्तर सही है या फ़ॉकन है लेकिन सरणी पर आपके समाधान की तरह .. मुझे लगता है कि आपका उत्तर बहुत अच्छा है। + –

+0

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

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