2011-12-02 19 views
12

मेरे पास बाइट्स की एक सरणी है और मुझे इसे एंड्रॉइड ड्रायबल में बदलने की ज़रूरत है। मैं यह रूपांतरण कैसे कर सकता हूं?बाइट [] से ड्रायबल कैसे बनाएं? (एंड्रॉइड)

यहाँ मैं क्या करने की कोशिश की लेकिन सफलता नहीं मिली है:

byte[] b = getByteArray(); 
ByteArrayInputStream is = new ByteArrayInputStream(b); 
Drawable drw = Drawable.createFromStream(is, "articleImage"); 

DRW हमेशा शून्य है!

संपादित करें:

मेरे बाइट [] वास्तव में/दूषित है अधूरा, कि समस्या थी।

+0

क्या आप सुनिश्चित हैं कि 'बी' में सार्थक डेटा है? –

+2

आपका बाइट [] दूषित हो गया है, शायद बेकार रूपांतरण से एक स्ट्रिंग तक, जो कि अगर आप इसके बीच में एन्कोडिंग बदल रहे हैं तो बेवकूफ़ नहीं है। – njzk2

उत्तर

1

क्या आपको वास्तव में एक ड्रायबल की आवश्यकता है? बिटमैप, फिट हैं कर सकते हैं तो:

Bitmap bitmap = BitmapFactory.decodeStream(is); 
24

यदि आपका byte[] b imagedata तो आप भी इस कोशिश कर सकते हैं शामिल है,

Drawable image = new BitmapDrawable(BitmapFactory.decodeByteArray(b, 0, b.length)); 

संपादित

संसाधन बिना

BitmapDrawable निर्माता अब हटाई गई है, तो इसके बजाए इसका उपयोग करें:

Drawable image = new BitmapDrawable(getResources(),BitmapFactory.decodeByteArray(b, 0, b.length)); 

इसे आज़माएं और मुझे बताएं कि क्या होता है,

+0

यह अब शून्य नहीं लौटा रहा है, यह एक खींचने योग्य वस्तु को वापस कर रहा है, लेकिन जब मैं इसे स्क्रीन में प्रिंट करता हूं तो कोई चित्र नहीं दिखाया जाता है। मेरे पास वास्तव में डेटाबेस में एक ब्लॉब है, मैं इसे स्ट्रिंग में परिवर्तित करता हूं, फिर बाइट [], फिर ड्रायरेबल में। यह पता लगाने में दर्द होगा कि त्रुटि कहां हो सकती है। –

+0

और इसके बारे में क्या है यदि आप सीधे बाइट सरणी का उपयोग बिना ड्रॉइंग बनाने के लिए स्ट्रिंग में कनवर्ट कर सकते हैं ..? – user370305

+0

और ब्लूट प्रकार के रूप में सीधे sqlite डीबी में बाइट सरणी स्टोर करें, इसे आज़माएं, देखते हैं कि क्या हो रहा है ... – user370305