Get the displayed size of an image inside an ImageView
the following will work:
ih=imageView.getMeasuredHeight();//height of imageView
iw=imageView.getMeasuredWidth();//width of imageView
iH=imageView.getDrawable().getIntrinsicHeight();//original height of underlying image
iW=imageView.getDrawable().getIntrinsicWidth();//original width of underlying image
if (ih/iH<=iw/iW) iw=iW*ih/iH;//rescaled width of image within ImageView
else ih= iH*iw/iW;//rescaled height of image within ImageView
(iw x ih) now represents the actual rescaled (width x height) for the image within the view (in other words the displayed size of the image)
EDIT: I think a nicer way to write the above answer (and one that works with ints) :
final int actualHeight, actualWidth;
final int imageViewHeight = imageView.getHeight(), imageViewWidth = imageView.getWidth();
final int bitmapHeight = ..., bitmapWidth = ...;
if (imageViewHeight * bitmapWidth <= imageViewWidth * bitmapHeight) {
actualWidth = bitmapWidth * imageViewHeight / bitmapHeight;
actualHeight = imageViewHeight;
} else {
actualHeight = bitmapHeight * imageViewWidth / bitmapWidth;
actualWidth = imageViewWidth;
}
return new Point(actualWidth,actualHeight);
increase the size of the image inside the imageview
Try this:
for image use: android:scaleType="fitXY"
and for 1/3 of the screen use android weightsum
and layout_weight
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="3">
<ImageButton
android:id="@+id/image_button"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:scaleType="fitXY"
android:src="@android:drawable/ic_menu_add"
android:visibility="visible" />
</LinearLayout>
output:
Getting image dimensions in pixels in ImageView
This is the solution found in a web site.
I needed to change the Option value when I decode the resource not to scale the original image. I had to use the three parameters for the decodeResource function, not two.
Of course, the third parameter was Options specifying the original bitmap not to be scaled. So now I can get 800 when I call bitmap's getWidth() function.
Resources res = getResources();
int id = R.drawable.map10;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
// options.inSampleSize = 3;
Bitmap bb = BitmapFactory.decodeResource(res, id, options);
float fwidth = bb.getWidth();
Get image dimensions after it draws in screen
You can do a lot with the matrix the view uses to display the image.
Here I calculate the scale the image is drawn at:
private float scaleOfImageView(ImageView image) {
float[] coords = new float[]{0, 0, 1, 1};
Matrix matrix = image.getImageMatrix();
matrix.mapPoints(coords);
return coords[2] - coords[0]; //xscale, method assumes maintaining aspect ratio
}
Applying the scale to the image dimensions gives the displayed image size:
private void logImageDisplaySize(ImageView image) {
Drawable drawable = image.getDrawable();
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
float scale = scaleOfImageView(image);
float displayedWidth = scale * width;
float displayedHeight = scale * height;
Log.d(TAG, String.format("Image drawn at scale: %.2f => %.2f x %.2f",
scale, displayedWidth, displayedHeight));
}
I suspect you don't really care about the image size, I suspect you want to map touch points back to a coordinate on the image, this answer shows how to do this (also using the image matrix): https://stackoverflow.com/a/9945896/360211
Related Topics
Android Sdk Install: Java Se Development Kit (Jdk) Not Found
No Cached Version Available for Offline Mode
How to Avoid Restarting Activity When Orientation Changes on Android
No Resource Found That Matches The Given Name '@Style/ Theme.Holo.Light.Darkactionbar'
Creating a Seterror() for The Spinner
How to Access Resource with Dynamic Name in My Case
Android Sqlitedatabase Query with Like
How to Disable Viewpager Adapter on Touching Specific Views
How to Find Memory Leaks from Native Code in Android
Android Device Phone Call Ability
Draw a Semicircle in The Background of a View
How to Import Eclipse Library Project from Github to Android Studio Project
Android Blurmaskfilter Has No Effect in Canvas.Drawoval While Text Is Blurred
Fragmentmanager Is Already Executing Transactions. When Is It Safe to Initialise Pager After Commit
How to Deal with Deprecated Classes in Android to Keep Compatibility
Why Is Fusedlocationapi.Getlastlocation Null
Ionic Cordova App Stopped Compiling After Google's June 17Th Firebase Sdk Update