2014-11-11 8 views
19

में ImageView से बिटमैप प्राप्त करें मैं से Bitmap प्राप्त करना चाहता हूं। मैंने निम्नलिखित कोड का उपयोग किया है, लेकिन getDrawable() शून्य लौटाता है। ImageView से पूरे Bitmap कैसे प्राप्त करें।एंड्रॉइड एल

Bitmap bitmap; 
if (mImageViewer.getDrawable() instanceof BitmapDrawable) { 
    bitmap = ((BitmapDrawable) mImageViewer.getDrawable()).getBitmap(); 
} else { 
    Drawable d = mImageViewer.getDrawable(); 
    bitmap = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    d.draw(canvas); 
} 
storeImage(bitmap,"final.jpeg"); 
+1

आपका कोड काम करना चाहिए, सुनिश्चित करें कि आपकी छवि दृश्य को आकर्षित करने योग्य है, अगर आप हैं सेटबैकग्राउंड उपयोग सेट का उपयोग करके छवि को सेट करना – elmorabea

उत्तर

15
this answer के अनुसार

, सिर्फ इस तरह यह कार्य करें:

imageView.buildDrawingCache(); 
Bitmap bmap = imageView.getDrawingCache(); 
+2

के बजाय यह सेट पूरी तरह से काम नहीं करता है, आमतौर पर कैनवास देता है: रीसाइक्लिंग बिटमैप –

+0

का उपयोग करने का प्रयास इस समाधान के साथ यह समाधान (http://stackoverflow.com/questions/5566758/bitmap- से-टेक्स्टव्यू-getdrawingcache-always-null) मेरे लिए काम किया: imageView.measure (MeasureSpec.makeMeasureSpec (0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec (0, MeasureSpec.UNSPECIFIED)); imageView.layout (0, 0, imageView.getMeasuredWidth(), imageView.getMeasuredHeight()); – Roy

14

तुम सिर्फ एक imageView से बिटमैप निम्नलिखित कोड आप के लिए काम कर सकते हैं चाहते हैं: -

Bitmap bm=((BitmapDrawable)imageView.getDrawable()).getBitmap();

सभी चित्रकारी गुणों में छवि रखने का प्रयास करें फ़ोल्डर्स (ड्रॉबल-एचडीपीआई/ड्रायरेबल-एलडीपीआई इत्यादि)

यह हो सकता है कि आपके द्वारा उपयोग किए जाने वाले एमुलेटर या डिवाइस में एक अलग घनत्व हो और अन्य फ़ोल्डर से छवियों को खींचने की कोशिश कर रहा हो।

यदि आप .png, .jpg, या .gif के अलावा अपनी छवि में कोई एक्सटेंशन का उपयोग कर रहे हैं, तो यह अन्य एक्सटेंशन प्रकारों को पहचान नहीं सकता है। http://developer.android.com/guide/topics/resources/drawable-resource.html

34

इस प्रयास करें:

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); 
Bitmap bitmap = drawable.getBitmap(); 
3

आप ग्लाइड भरी हुई छवि से बिटमैप पाने के लिए कोशिश कर रहे हैं तो यह आपकी मदद करेगा

Drawable dr = ((ImageView) imView).getDrawable(); 
     Bitmap bmp = ((GlideBitmapDrawable)dr.getCurrent()).getBitmap(); 
0

ImagView की एक तस्वीर ले लो और यह एक स्ट्रिंग के लिए कनवर्ट सर्वर को भेजने के लिए

ImageView ivImage1 = (ImageView) findViewById(R.id.img_add1_send); 


        getStringImage(((BitmapDrawable) ivImage1.getDrawable()).getBitmap()), 



public String getStringImage(Bitmap bm){ 
    ByteArrayOutputStream ba=new ByteArrayOutputStream(); 
    bm.compress(Bitmap.CompressFormat.PNG,90,ba); 
    byte[] by=ba.toByteArray(); 
    String encod= Base64.encodeToString(by,Base64.DEFAULT); 
    return encod; 
} 
संबंधित मुद्दे