【发布时间】:2012-03-16 17:22:26
【问题描述】:
我尝试使用ImageView.getDrawingCache(); 将位图附加到 ImageView,但我发现返回的位图与我想从 ImageView 中获取的位图不同。它总是比真实图像小。
我知道,getDrawingCache() 方法不应该有视图,如果它比屏幕大,因为视图的可见部分只被绘制,缓存只保存绘制的内容。
我可以将整个位图附加到 ImageView 吗?
【问题讨论】:
我尝试使用ImageView.getDrawingCache(); 将位图附加到 ImageView,但我发现返回的位图与我想从 ImageView 中获取的位图不同。它总是比真实图像小。
我知道,getDrawingCache() 方法不应该有视图,如果它比屏幕大,因为视图的可见部分只被绘制,缓存只保存绘制的内容。
我可以将整个位图附加到 ImageView 吗?
【问题讨论】:
如果您只想要来自ImageView 的Bitmap,以下代码可能对您有用:-
Bitmap bm=((BitmapDrawable)imageView.getDrawable()).getBitmap();
我想这就是你想要的。
【讨论】:
如果你的drawble并不总是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中设置标签。
imageView.setImageBitmap(bitmap);
imageView.setTag(bitmap);
从中获取标签
imageView.getTag();
【讨论】: