计算位图大小的方法?

时间:2011-05-30 18:15:29

标签: android

我正在尝试查找图像的大小,但不是要加载到内存中。我使用流动的代码

BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeResource(a.getResources(), R.drawable.icon, o);
int width1 = o.outWidt;     
int height1 = o.outHeight;

现在,我做一些比较:

Bitmap icon = BitmapFactory.decodeResource(a.getResources(), R.drawable.icon);
int width = icon.getWidth();
int height = icon.getHeight();

为什么width,height不等于width1和height1?

2 个答案:

答案 0 :(得分:1)

我几乎可以肯定这是因为通过对图像进行解码来从资源中引用该图像会预先调整密度。

结帐#1,点击文档:http://developer.android.com/guide/practices/screens_support.html#DensityConsiderations

答案 1 :(得分:0)

我不确定发生了什么,但可能是BitmapFactory在实际返回位图时应用了密度缩放(如here所述),但在解码其大小时则不然。 (如果这是正在发生的事情,我会考虑提交错误报告。)

您可以将图片从drawables目录移至drawables-nodpi来测试此理论。