在ImageView中获取图像尺寸(以像素为单位)
尽管我试图在ImageView中获取像素的图像尺寸,但我发现它的宽度比原始jpg文件宽度多3倍。在ImageView中获取图像尺寸(以像素为单位)
我把一个尺寸为800 x 600的jpg文件,但下面的代码显示宽度为2400。
Bitmap bitmap = ((BitmapDrawable)imgv.getDrawable()).getBitmap();
float fwidth = bitmap.getWidth();
Log.d("width0", Float.toString(fwidth));
我再次检查了JPG文件大小,但它没有改变(800×600), 我还寻找一个解决方案,但上面的代码显示在其他用户的体验的位图的正确尺寸。
我做了什么不正确? 任何人都可以给我一些建议吗?
感谢您的帮助。
这是在一个网站找到了解决办法。
我需要更改选项值,当我解码资源不缩放原始图像。我不得不使用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
设置为: height
:WRAP_CONTENT width
:WRAP_CONTENT scaleType
:无
...这是我在评论中已经说过的。 –
我按照你的指示,wrap_content和没有比例类型,谢谢,但它仍然是一样的。此外,我使用setImageMatrix,getImageMatrix和matrix.postScale通过手指缩放图像。我需要删除这些代码吗?我担心这些正在改变ImageView的缩放类型。 (像我用setScaleType()) – Solek
是的,我认为如果你删除然后,你会得到正确的图像大小 –
'我做错了什么?'没有。您可能会拉伸您的ImageView以适应其容器的宽度。 –