इमेजमैप में बिटमैप संलग्न करें


314

दिया हुआ

ImageView image = R.findViewById(R.id.imageView);
image.setImageBitmap(someBitmap);

क्या बिटमैप को पुनः प्राप्त करना संभव है?


1
हां यह संभव है, जब आप छवि पर क्लिक करेंगे तो हमें यह मिलेगा कि यदि आप यह आवश्यकता चाहते हैं तो मुझे बताएं।
— राजारेड्डी पोलामेड्डी

जवाबों:


809
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();

34
यह जांचने के लिए सावधान रहें कि image.getDrawable()क्या वास्तव में आपको BitmapDrawable(बचने के लिए IllegalCastExceptions) कास्ट किया जा सकता है । यदि, उदाहरण के लिए, आप अपनी छवि में परतों का उपयोग करते हैं तो यह स्निपेट थोड़ा अलग होगा:Bitmap bitmap = ((BitmapDrawable)((LayerDrawable)image.getDrawable()).getDrawable(0)).getBitmap();
— एलेक्स सेमेनिउक

2
यह कभी-कभार, कुछ या सभी ब्लैक पिक्सल्स के साथ बिटमैप लौटाता है।

2
यदि आपने ड्रॉबल / इमेजव्यू पर आवेदन किया है तो यह मूल बिटमैप और न ही फ़िल्टर किए गए बिटमैप को वापस नहीं करेगा।
— प्रियध्वज ५

4
क्या यह काम करता है अगर इसमें से छवि ImageViewसेट है URI? imageView.setImageUri()
— हेंड्र एंग्रीयन

1
@praneethkumar यह मेरे परिदृश्य में काम करता है। इस भयानक जवाब के लिए अंगूठे!
— हेंड्र एंगरियन

46

यह आपको एक Bitmapसे मिलेगा ImageView। हालाँकि, यह वही बिटमैप ऑब्जेक्ट नहीं है जिसे आपने सेट किया है। यह एक नया है।

imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();

=== EDIT ===

 imageView.setDrawingCacheEnabled(true);
 imageView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                   MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
 imageView.layout(0, 0, 
                  imageView.getMeasuredWidth(), imageView.getMeasuredHeight()); 
 imageView.buildDrawingCache(true);
 Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());
 imageView.setDrawingCacheEnabled(false);

जब यह "काम नहीं करता है", तो क्या होता है? क्या यह अशक्त या अपवाद छोड़ देता है या क्या?
— सरवर इरफान

2
यह अशक्त है। कभी-कभी मुझे पृष्ठ को वास्तव में प्रदर्शित करने के लिए पुनः लोड करना पड़ता है।
— नींबू

3
मुझे एक अशक्त सूचक देता है। :( इस लाइन पर:Bitmap bmap = Bitmap.createBitmap(mImageView.getDrawingCache());
— Azurespot

रेखाचित्र को कोटलिन में चित्रित किया गया है
— राजू yourPepe



0

यह कोड बेहतर है।

public static  byte[] getByteArrayFromImageView(ImageView imageView)
    {
        BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageView.getDrawable());
        Bitmap bitmap;
        if(bitmapDrawable==null){
            imageView.buildDrawingCache();
            bitmap = imageView.getDrawingCache();
            imageView.buildDrawingCache(false);
        }else
        {
            bitmap = bitmapDrawable .getBitmap();
        }
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        return stream.toByteArray();
    }

क्या यह imageView.getDrawable () है; -> का मतलब है कि ड्रा करने योग्य फोल्डर से इमेज प्राप्त करना? CMIIW .... @ अहम्
— गमरू

नहीं। आप इस कोड का उपयोग कर सकते हैं। Bitmap imagenAndroid = BitmapFactory.decodeResource(getResources(),R.drawable.jellybean_statue);
— अहमद आगज़ादेह


-10

इस कोड को आज़माएं:

Bitmap bitmap;
bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();

6
क्या आप @Arslan के स्वीकृत उत्तर पर वृद्धि का वर्णन कर सकते हैं?
— बुम्मी

आप बेहतर तरीके से बताएंगे कि आपका उत्तर उसकी समस्या का हल क्यों करता है
— मुहम्मद रिफैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.