How to get the size of bitmap after displaying it in ImageView

耗尽温柔 提交于 2019-11-28 03:59:13

问题


I have a imageview

<ImageView
        android:id="@+id/imgCaptured"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:src="@drawable/captured_image" />

I capture a image from camera, converted that image into bitmap.

Bitmap thumbnail;
thumbnail = MediaStore.Images.Media.getBitmap(getActivity()
                    .getContentResolver(), imageUri);

when i get the resolution of this bitmap before displaying it in my above imageview, like

Log.i("ImageWidth = " + thumbnail.getWidth(), "ImageHeight = "
                + thumbnail.getHeight());

its returning me ImageWidth = 2592 ImageHeight = 1936

after this i displayed this bitmap in my above imageview as imgCaptured.setImageBitmap(thumbnail); then i go size of my imageview as

Log.i("ImageView Width = " + imgCaptured.getWidth(),
                "ImageView Height = " + imgCaptured.getHeight());

this returned me ImageView Width = 480 ImageView Height = 720

now my question is that

  • How can i get the size of that bitmap after displaying it in my imageview. I know this can be done by using this

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

    but this will create a new bitmap of size equal to that of imageview.

  • I also want to know that, Does image resized automatically after displaying it in the imageview. if yes then is there any way to display the image in imageview without resizing the image.

Edit

Actually i have captured an image of 2592x1936. I displayed this image in my imageView, did some other operations on this image . now i want to save this image with same 2592x1936 resolution. is it possible?

Thanks in advance.


回答1:


After you display a Bitmap in a ImageView, The ImageView will create a BitmapDrawable object to draw it in ImageView's Canvas. So you can invoke ImageView.getDrawable() method to get the reference of the BitmapDrawable, and get the Bounds by invoke Drawable.getBounds(Rect rect) method. through the bounds, you can compute the width and height of the Bitmap drawn in ImageView

Drawable drawable = ImageView.getDrawable();
//you should call after the bitmap drawn
Rect bounds = drawable.getBounds();
int width = bounds.width();
int height = bounds.height();
int bitmapWidth = drawable.getIntrinsicWidth(); //this is the bitmap's width
int bitmapHeight = drawable.getIntrinsicHeight(); //this is the bitmap's height


来源:https://stackoverflow.com/questions/15128204/how-to-get-the-size-of-bitmap-after-displaying-it-in-imageview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!