2011-03-09 14 views
6

में संकुचित कर दिया गया है मैं निम्नलिखित तरीकेडिकोड बाइट सरणी है कि जावा

Bitmap bmpSig = getMyBitMap(); 
int size = bmpSig.getWidth() * bmpSig.getHeight(); 
ByteArrayOutputStream out = new ByteArrayOutputStream(size); 
bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out); 
byte[] bytSig = out.toByteArray(); 

मैं तो बाइट सरणी से एक Android imageView में छवि प्रदर्शित करने कोशिश कर रहा हूँ में एक बिटमैप को संपीड़ित कर रहा हूँ। जब मैं ऐसा करता हूं तो मुझे एक ऐसी छवि मिलती है जो पूरी तरह से काला छवि है।

ImageView myImg = (ImageView) findViewById(R.id.img_view); 
myImg.setImageBitmap(BitmapFactory.decodeByteArray(bytSig, 0, bytSig.length)); 

मैं ऐसा इसलिए है क्योंकि मैं() BitmapFactory.decodeByteArray से पहले एक कदम JPEG संपीड़न उल्टा करने के लिए याद आ रही है यह सोचते हैं रहा हूँ। या क्या मैंने गलत समझा है कि संपीड़न कैसे काम करता है?

उत्तर

6

मुझे एहसास नहीं हुआ कि मेरे बिटमैप की पृष्ठभूमि (कैनवास ऑब्जेक्ट से) पारदर्शी थी। चूंकि यह बिटमैप एक सफेद पृष्ठभूमि पर सिर्फ काले रेखाएं हैं, इसलिए काला छवि जेपीईजी को संपीड़ित करने के कारण छवि को एक काला पृष्ठभूमि प्रदान करती है।

मैं

bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out); 

बदल दिया है

bmpSig.compress(Bitmap.CompressFormat.PNG, 100, out); 

करने और यह अपेक्षा के अनुरूप काम कर रहा है।

+1

नहीं ... आपको केवल काले रंग की गहरा छाया का उपयोग करने की आवश्यकता है। –

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