在ImageView中获取图像尺寸(以像素为单位)

在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), 我还寻找一个解决方案,但上面的代码显示在其他用户的体验的位图的正确尺寸。

我做了什么不正确? 任何人都可以给我一些建议吗?

感谢您的帮助。

+0

'我做错了什么?'没有。您可能会拉伸您的ImageView以适应其容器的宽度。 –

这是在一个网站找到了解决办法。

我需要更改选项值,当我解码资源不缩放原始图像。我不得不使用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设置为: heightWRAP_CONTENT widthWRAP_CONTENT scaleType

+1

...这是我在评论中已经说过的。 –

+0

我按照你的指示,wrap_content和没有比例类型,谢谢,但它仍然是一样的。此外,我使用setImageMatrix,getImageMatrix和matrix.postScale通过手指缩放图像。我需要删除这些代码吗?我担心这些正在改变ImageView的缩放类型。 (像我用setScaleType()) – Solek

+0

是的,我认为如果你删除然后,你会得到正确的图像大小 –