将一个ImageView的位图内容复制到另一个

这让我感到困惑。 我需要将Bitmap从一个ImageView复制到另一个。 我不想简单地将一个ImageView复制到另一个ImageView,因为我需要对位图进行一些更改。

这是一些不起作用的代码。

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 

//testing位图:

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

我不得不去解决这个问题,因为做一个副本应该非常简单。 TIA

Solutions Collecting From Web of "将一个ImageView的位图内容复制到另一个"

不使用绘图caching,但你不需要调用buildDrawingCache()?

我会这样做的方式:

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

请注意,bmSrc2是可变的,也就是说,你可以把它粘在一个Canvas中,并在绘制它之前做任何你喜欢的事情。