在屏幕上绘制后获取图像尺寸
Get image dimensions after it draws in screen
我有一个 ImageView
高度和宽度 MathParent
在我的 activity 中,它将图片从资源加载到 ImageView
。我怎样才能在 ImageView
缩放后得到图片的宽度和高度。
我没有在 XML
中设置 android:scaleType
我的意思是这些尺寸!
您可以使用视图用来显示图像的 matrix 做很多事情。
这里我计算图像绘制的比例:
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
}
将比例应用于图像尺寸给出显示的图像尺寸:
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));
}
我怀疑你并不真正关心图像大小,我怀疑你想将触摸点映射回图像上的坐标,这个答案展示了如何做到这一点(也使用图像矩阵):
我有一个 ImageView
高度和宽度 MathParent
在我的 activity 中,它将图片从资源加载到 ImageView
。我怎样才能在 ImageView
缩放后得到图片的宽度和高度。
我没有在 XML
中设置 android:scaleType
我的意思是这些尺寸!
您可以使用视图用来显示图像的 matrix 做很多事情。
这里我计算图像绘制的比例:
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
}
将比例应用于图像尺寸给出显示的图像尺寸:
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));
}
我怀疑你并不真正关心图像大小,我怀疑你想将触摸点映射回图像上的坐标,这个答案展示了如何做到这一点(也使用图像矩阵):