Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the height and width of an ImageView/Bitmap in Android

I want to get the height and width of an image bitmap that is either in ImageView or a background image. Please help me, any help will be appreciated.

like image 799
abhishek ameta Avatar asked Jan 16 '12 12:01

abhishek ameta


People also ask

How can you tell the size of a photo on Android?

On android go to photos, select your photo and click the ... in the top right. Scroll to bottom of page to find image size.

What is ImageView in Android?

Displays image resources, for example Bitmap or Drawable resources. ImageView is also commonly used to apply tints to an image and handle image scaling.

How to create Bitmap in android?

To create a bitmap from a resource, you use the BitmapFactory method decodeResource(): Bitmap bitmap = BitmapFactory. decodeResource(getResources(), R. drawable.


2 Answers

You can get height and width of ImageView by using getWidth() and getHeight() through while this will not give you the exact width and height of the image, for getting the Image width height first you need to get the drawable as background then convert drawable to BitmapDrawable to get the image as Bitmap from that you can get the width and height like here

Bitmap b = ((BitmapDrawable)imageView.getBackground()).getBitmap(); int w = b.getWidth(); int h = b.getHeight(); 

or do like here

imageView.setDrawingCacheEnabled(true); Bitmap b = imageView.getDrawingCache(); int w = b.getWidth(); int h = b.getHeight(); 

the above code will give you current imageview sized bitmap like screen shot of device

for only ImageView size

imageView.getWidth();  imageView.getHeight();  

If you have drawable image and you want that size you can get like this way

Drawable d = getResources().getDrawable(R.drawable.yourimage); int h = d.getIntrinsicHeight();  int w = d.getIntrinsicWidth();       
like image 158
Pratik Avatar answered Sep 28 '22 01:09

Pratik


For some reason accepted answer didn't work for me, instead I achieved the image dimension as per the target screen dpi like this.

Method 1

Context context = this; //If you are using a view, you'd have to use getContext(); Resources resources = this.getResources(); BitmapFactory.Options bounds = new BitmapFactory.Options(); bounds.inJustDecodeBounds = true; BitmapFactory.decodeResource(resources, R.drawable.cake, bounds); //use your resource file name here. Log.d("MainActivity", "Image Width: " + bounds.outWidth); 

Here is the original link

http://upshots.org/android/android-get-dimensions-of-image-resource

Method 2

BitmapDrawable b = (BitmapDrawable)this.getResources().getDrawable(R.drawable.cake); Log.d("MainActivity", "Image Width: " + b.getBitmap().getWidth()); 

It doesn't show the exact number of pixels in the image resource but a meaningful number perhaps someone can explain further.

like image 34
Naveed Abbas Avatar answered Sep 28 '22 00:09

Naveed Abbas