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

时间:2011-01-17 15:48:27

标签: android image bitmap screen imageview

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

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

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

7 个答案:

答案 0 :(得分:94)

您可以使用imageView的图像缓存。它会将整个视图渲染(缩放,与背景等边界)渲染到新的位图。

确保它已构建完毕。

imageView.buildDrawingCache();
Bitmap bmap = imageView.getDrawingCache();

屏幕上看到了你的位图。

答案 1 :(得分:58)

你试过了吗?

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();

答案 2 :(得分: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);

出于好奇,你想要完成什么?可能有一种更好的方法来实现你的目标,而不是你的想法。

答案 3 :(得分:1)

try {
        photo.setImageURI(Uri.parse("Location");
        BitmapDrawable drawable = (BitmapDrawable) photo.getDrawable();
        Bitmap bitmap = drawable.getBitmap();
        bitmap = Bitmap.createScaledBitmap(bitmap, 70, 70, true);
        photo.setImageBitmap(bitmap);

    } catch (Exception e) {

    }

答案 4 :(得分:1)

这是一个有效的代码

imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());

答案 5 :(得分:0)

buildDrawingCache()被弃用后,它就可以在Kotlin中使用

 // convert imageView to bitmap
val bitmap = (imageViewId.getDrawable() as BitmapDrawable).getBitmap()

答案 6 :(得分:0)

在 Kotlin 中;

imageView.drawable?.let {
        val mBitmap = (it as BitmapDrawable).bitmap
    }