在 ImageView 中获取以像素为单位的图像尺寸
Getting image dimensions in pixels in ImageView
当我尝试在 ImageView 中获取以像素为单位的图像尺寸时,我发现它的宽度是原始 jpg 文件宽度的 3 倍。
我放了一个尺寸为 800 x 600 的 jpg 文件,但下面的代码显示其宽度为 2400。
Bitmap bitmap = ((BitmapDrawable)imgv.getDrawable()).getBitmap();
float fwidth = bitmap.getWidth();
Log.d("width0", Float.toString(fwidth));
我再次检查了 jpg 文件大小,但没有改变 (800 x 600),
我也搜索了一个解决方案,但上面的代码根据其他用户的经验显示了位图的正确尺寸。
我做错了什么?
谁能给我一些建议?
感谢您的帮助。
确保您的 ImageView
设置为:
height
: wrap_content
width
: wrap_content
scaleType
: none
这是在网站上找到的解决方案。
我在解码资源时需要更改选项值以不缩放原始图像。我不得不为 decodeResource 函数使用三个参数,而不是两个。
当然,第三个参数是Options,指定原始位图不缩放。所以现在当我调用位图的getWidth()函数时我可以得到800。
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();
当我尝试在 ImageView 中获取以像素为单位的图像尺寸时,我发现它的宽度是原始 jpg 文件宽度的 3 倍。
我放了一个尺寸为 800 x 600 的 jpg 文件,但下面的代码显示其宽度为 2400。
Bitmap bitmap = ((BitmapDrawable)imgv.getDrawable()).getBitmap();
float fwidth = bitmap.getWidth();
Log.d("width0", Float.toString(fwidth));
我再次检查了 jpg 文件大小,但没有改变 (800 x 600), 我也搜索了一个解决方案,但上面的代码根据其他用户的经验显示了位图的正确尺寸。
我做错了什么? 谁能给我一些建议?
感谢您的帮助。
确保您的 ImageView
设置为:
height
: wrap_content
width
: wrap_content
scaleType
: none
这是在网站上找到的解决方案。
我在解码资源时需要更改选项值以不缩放原始图像。我不得不为 decodeResource 函数使用三个参数,而不是两个。
当然,第三个参数是Options,指定原始位图不缩放。所以现在当我调用位图的getWidth()函数时我可以得到800。
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();