如何获取附加到ImageView的整个位图?

我尝试使用ImageView.getDrawingCache();获取附加到ImageView的位图ImageView.getDrawingCache(); 但是我发现返回的Bitmap与我想从ImageView中获得的不一样。 它总是比真实的图像小。

我已经知道,如果getDrawingCache()方法比屏幕更大时, getDrawingCache()方法不应该具有视图,因为只能绘制视图的可见部分,并且caching仅保存所绘制的部分。

我可以把整个位图附加到ImageView吗?

Solutions Collecting From Web of "如何获取附加到ImageView的整个位图?"

如果你只是想从一个ImageViewBitmap下面的代码可能会为你工作: –

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

我想这就是你想要的。

如果你的drawable不总是一个BitmapDrawable的实例

注意:在执行此操作之前,应该先设置ImageView。

 Bitmap bitmap; if (mImageView.getDrawable() instanceof BitmapDrawable) { bitmap = ((BitmapDrawable) mImageView.getDrawable()).getBitmap(); } else { Drawable d = mImageView.getDrawable(); bitmap = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); d.draw(canvas); } 

您的位图存储在位图中。

瞧!

最简单的方法是设置标签。

imageView.setImageBitmap(位图); imageView.setTag(位图);

稍后使用imageView.getTag();