2010-10-18 13 views
7

पर RGB565 बफर को लोड करने के लिए कैसे करें मेरे पास "Image_RGB565.raw" फ़ाइल है जिसमें RGB565 प्रारूप में छवि बफर शामिल है। मैं चाहता हूं कि यह छवि ImageView में प्रदर्शित हो। क्या आरजीबी 888 में कनवर्ट करने के अतिरिक्त कोड के बिना यह संभव है?ImageView

मैं

 
BitmapFactory.Options opt = new BitmapFactory.Options(); 
opt.inPreferredConfig = Bitmap.Config.RGB_565; 
Bitmap bitmap = BitmapFactory.decodeFile("Image_001_RGB565.raw"); 

की कोशिश की है लेकिन बिटमैप रिक्त है।

तो मैं भी

 
BitmapFactory.Options opt = new BitmapFactory.Options(); 
opt.inPreferredConfig = Bitmap.Config.RGB_565; 
Bitmap bitmap = BitmapFactory.decodeFile(decodeByteArray(data, 0, data.length, opt); 

bytearray का उपयोग कर कृपया मुझे मार्गदर्शन दिशा सही करने के लिए लोड करने के लिए कोशिश की। मेरी छवि आयाम 160x160 है।

उत्तर

6

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

1) एक Bitmap.Config.RGB_565bitmap अपनी छवि को शामिल करने के लिए बनाने के लिए:

हालांकि, अगर कुछ असामान्य कारण के लिए आप वास्तव में कच्चे छवियों को लोड करना चाहते हैं, यहाँ एक दृष्टिकोण है। आपको अपनी कच्ची छवि की ऊंचाई और चौड़ाई जाननी चाहिए।

2) ByteBuffer बनाएं जो बिटमैप में सभी पिक्सेल को रखने के लिए पर्याप्त आकार है; प्रत्येक छवि के स्कैनलाइनस्ट्रिंग पिक्सेल की मात्रा लेती है, जो छवि की चौड़ाई से अधिक हो सकती है। प्रत्येक पंक्ति पर यह अतिरिक्त पैडिंग आवश्यक है। (कभी-कभी खुश संयोग से चौड़ाई चौड़ाई के समान होती है - कोई पैडिंग नहीं होती है; इस पर भरोसा नहीं किया जा सकता है, हमेशा अपने ऑफसेट को आगे बढ़ने के लिए खाते लेते हैं।)

बाइटबफर के साथ, पढ़ने और लिखने के लिए यह महत्वपूर्ण है ऑफसेट। बाइटबफर को लिखने के बाद, आप flip इसे उन बाइट्स को पढ़ने के लिए।

3) फ़ाइल से कच्चे पिक्सेल को अपने ByteBuffer में, एक समय में एक स्कैनलाइन पढ़ें, लाइनों के बीच उचित अंतर अंतर के साथ।

4) Bitmap.copyPixelsFromBuffer() का उपयोग करें।

5) ByteBuffer

+0

हैलो विल, मैं आपके सुझाव के अनुसार छवि प्रदर्शित करने में सक्षम था। बहुत बहुत धन्यवाद। – JRC

+0

@ जेआरसी मदद करने में खुश; उत्तर को स्वीकार करने के रूप में चिह्नित करें और मुझे कुछ अंक दें! – Will

+0

सुपर सहायक। विस्तृत जानकारी के लिए धन्यवाद! –

2

त्यागने मैं इसे इस तरह किया है, और यह काम करता है।

बिटमैप बिटमैप = बिटमैप.क्रेट बिटमैप (कैप्चरविड्थ, कैप्चर हाइट, बिटमैप.कॉन्फिग.आरजीबी_565);

बाइटबफर बफर = ByteBuffer.wrap (डेटा);

बिटमैप.copyPixelsFromBuffer (बफर);

+0

थान ओओओ, मैं कोशिश करूंगा – JRC

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