बाइट को बिटमैप में कैसे बदलें


123

मैं इमेज को स्टोर करना चाहता हूं SQLite DataBase। मैंने इसका उपयोग करके इसे स्टोर करने की कोशिश की BLOBऔर Stringदोनों ही मामलों में, यह इमेज को स्टोर करता है और इसे पुनः प्राप्त कर सकता है, लेकिन जब मैं इसे null रिटर्न Bitmapका उपयोग करके परिवर्तित करता हूं BitmapFactory.decodeByteArray(...)

मैंने इस कोड का उपयोग किया है, लेकिन यह अशक्त है

Bitmap  bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length);

4
कृपया इस पृष्ठ पर "संबंधित" अनुभाग में पहले 5-10 लिंक पढ़ें।
Mat

2
क्या आपने डेटाबेस में लिखने से पहले बिटमैप को एनकोड किया था?
रोनी

जवाबों:


284

बस यह प्रयास करें:

Bitmap bitmap = BitmapFactory.decodeFile("/path/images/image.jpg");
ByteArrayOutputStream blob = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0 /* Ignored for PNGs */, blob);
byte[] bitmapdata = blob.toByteArray();

यदि bitmapdataबाइट सरणी है तो Bitmapइस तरह किया जा रहा है:

Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);

डीकोड किए गए को लौटाता है Bitmap, या nullयदि छवि को डीकोड नहीं किया जा सकता है।


2
यदि यह अन्य प्रारूप में है जिसे आप डिकोड करने का प्रयास कर रहे हैं तो छवि को डिकोड नहीं किया जा सकता है
lxknvlk

2
क्या होगा अगर मुझे इस तरह के ऑपरेशन को कई बार अनुक्रम में करना होगा? क्या हर बार नया बिटमैप ऑब्जेक्ट बनाने के लिए संसाधन-खपत नहीं है? क्या मैं किसी तरह अपने बिट को मौजूदा बिटमैप में डिकोड कर सकता हूं?
एलेक्स सेमेनिच

मैं एक अलग उत्तर पोस्ट करता हूं जब आपके पास बस छवि पिक्सेल का एक बफर होता है। मैं हमेशा अपने बफर में, ऊंचाई और रंग की कमी के कारण अशक्त हो रहा था। आशा करता हूँ की ये काम करेगा!
जूलियन

31

उत्तम के उत्तर ने मेरे लिए काम नहीं किया। मैं बस शून्य हो गया जब मैं करता हूँ:

Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);

मेरे मामले में, बिटमैपडेटा में केवल पिक्सेल का बफर होता है, इसलिए यह फ़ंक्शन डिकोडबाइट के लिए असंभव है, यह अनुमान लगाने के लिए कि चौड़ाई, ऊंचाई और रंग बिट्स का उपयोग करते हैं। तो मैंने यह कोशिश की और यह काम किया:

//Create bitmap with width, height, and 4 bytes color (RGBA)    
Bitmap bmp = Bitmap.createBitmap(imageWidth, imageHeight, Bitmap.Config.ARGB_8888);
ByteBuffer buffer = ByteBuffer.wrap(bitmapdata);
bmp.copyPixelsFromBuffer(buffer);

चेक https://developer.android.com/reference/android/graphics/Bitmap.Config.html अलग रंग विकल्पों के लिए


2
mBitmaps क्या है?
user924
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.