在 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();