2010-10-21 14 views
7

यह मुझे परेशान कर रहा है। मुझे बिटमैप को एक छवि दृश्य से दूसरे में कॉपी करने की आवश्यकता है। मैं बस एक छवि दृश्य को दूसरे में कॉपी नहीं करना चाहता क्योंकि मुझे बिटमैप में कुछ बदलाव करने की ज़रूरत है।एक छवि दृश्य की बिटमैप सामग्री को कॉपी करें

यहां कुछ कोड है जो काम नहीं करता है।

ImageView ivSrc = (ImageView) findViewById(R.id.photo); 

ivSrc.setDrawingCacheEnabled(true); 
    Bitmap bmSrc1 = ivSrc.getDrawingCache(); // will cause nullPointerException 

    Bitmap bmSrc2 = Bitmap.createBitmap(ivSrc.getDrawingCache());//bmSrc2 will be null 

    View vSrc = (View) ivSrc.getParent(); 
    vSrc.setDrawingCacheEnabled(true); 
    Bitmap bmSrc3 = Bitmap.createBitmap(vSrc.getDrawingCache()); //black bitmap 

// बिटमैप्स परीक्षण करने के लिए:

 ImageView ivDest = (ImageView) findViewById(R.id.photo2); 
     ivDest.setImageBitmap(bmSrc1); //bmSrc1, 2, 3 results shown above 

मैं इस गलत के बारे में जा रहा है क्योंकि एक प्रति ऐसा करने से आसान होना चाहिए करने के लिए है। टीआईए

उत्तर

20

ड्राइंग कैश का उपयोग नहीं किया गया है, लेकिन आपको BuildDrawingCache() को कॉल करने की आवश्यकता नहीं होगी?

तरह से मैं यह कर चाहते हैं:

Bitmap bmSrc1 = ((BitmapDrawable)ivSrc.getDrawable()).getBitmap(); 
Bitmap bmSrc2 = bmSrc1.copy(bmSrc1.getConfig(), true); 

ध्यान दें कि bmSrc2 परिवर्तनशील है, यानि कि आप इसे एक कैनवास में चिपक जाते हैं और जो कुछ भी आप इसे कहीं निकालने से पहले इसके साथ चाहते कर सकते हैं।

+0

क्या होगा (आपके चर का उपयोग करके) 'bmSrc2' नकारात्मक चौड़ाई और/या ऊंचाई के साथ आता है? –

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