Android:如何将整个ImageView转换为Bitmap?

yos*_*osh 40 android image screen bitmap imageview

我的应用程序显示不同比例的图像,内部(centerInside)imageView调整大小.我需要的是从ImageView创建包括背景的位图(在这种情况下为黑色).

所以例如我有设备屏幕320x480,全屏imageView图像大小调整为280x480.我怎么能从它获得320x480位图?

在这个imageview的顶部,我有一些我不想包含在位图中的徽标或按钮,它们就像在顶层.我需要的只是带有图像的位图和来自某些边的黑色边框.

Gre*_*lli 95

你可以使用imageView的图像缓存.它将整个视图渲染(按比例缩放,以背景等为边界)渲染到新的位图.

只是确保它建成.

imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();
Run Code Online (Sandbox Code Playgroud)

屏幕上看到了你的位图.

  • 好的,还有http://stackoverflow.com/questions/2339429/android-view-getdrawingcache-returns-null-only-null它解决了我的问题:)谢谢. (6认同)
  • 文档陈述`buildDrawingCache()`应该被调用`destroyDrawingCache`(见这里:http://developer.android.com/reference/android/view/View.html#buildDrawingCache%28boolean%29) (5认同)
  • 它已被弃用。 (3认同)
  • 听起来不错,但只是用NullPointerException弹出暴击.这是因为图像还没有建成? (2认同)

Cri*_*ian 62

你有没有尝试过:

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();
Run Code Online (Sandbox Code Playgroud)


kco*_*ock 5

只是在这里大声思考(承认自己几乎没有使用Java图形技术的专门知识),也许这样的事情会起作用吗?:

ImageView iv = (ImageView)findViewById(R.id.imageview);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
iv.draw(canvas);
Run Code Online (Sandbox Code Playgroud)

出于好奇,您要完成什么?实现目标的方法可能比您的想法更好。