323

给定

ImageView image = R.findViewById(R.id.imageView);
image.setImageBitmap(someBitmap);

是否可以检索位图?

4

7 回答 7

825
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
于 2011-11-29T06:15:42.090 回答
46

这会让你BitmapImageView. 但是,它与您设置的位图对象不同。这是一个新的。

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

=== 编辑 ===

 imageView.setDrawingCacheEnabled(true);
 imageView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                   MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
 imageView.layout(0, 0, 
                  imageView.getMeasuredWidth(), imageView.getMeasuredHeight()); 
 imageView.buildDrawingCache(true);
 Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());
 imageView.setDrawingCacheEnabled(false);
于 2011-11-29T06:12:10.107 回答
3

写下面的代码

ImageView yourImageView = (ImageView) findViewById(R.id.yourImageView);
Bitmap bitmap = ((BitmapDrawable)yourImageView.getDrawable()).getBitmap();
于 2018-02-03T07:29:47.000 回答
2

对于那些正在寻找Kotlin解决方案的人Bitmap来说ImageView

var bitmap = (image.drawable as BitmapDrawable).bitmap
于 2019-11-13T06:53:35.703 回答
0

这段代码更好。

public static  byte[] getByteArrayFromImageView(ImageView imageView)
    {
        BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageView.getDrawable());
        Bitmap bitmap;
        if(bitmapDrawable==null){
            imageView.buildDrawingCache();
            bitmap = imageView.getDrawingCache();
            imageView.buildDrawingCache(false);
        }else
        {
            bitmap = bitmapDrawable .getBitmap();
        }
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        return stream.toByteArray();
    }
于 2017-08-20T18:41:36.160 回答
-4

获取图像位图的其他方法是这样做:

Bitmap imagenAndroid = BitmapFactory.decodeResource(getResources(),R.drawable.jellybean_statue);
imageView.setImageBitmap(imagenAndroid);
于 2014-12-19T16:45:49.517 回答
-10

试试这个代码:

Bitmap bitmap;
bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
于 2015-06-16T07:23:49.307 回答