BitmapFactory返回比源更大的图像

时间:2011-09-09 15:00:35

标签: android bitmapfactory

您好我正在从名为image.png的png图片创建一个位图。图像的尺寸为75(宽度)×92(高度)。当我运行此代码时:

Bitmap bitmap = BitmapFactory.decodeResource(this.context.getResources(),  R.drawable.image
Log.d("image", "height: " + bitmap.getHeight() + " width: " + bitmap.getWidth());

记录器记录:

DEBUG/image(3550): height: 138 width: 113

并且屏幕上的图像比尺寸为75 x 92的其他图像大。我可以做些什么来让Android加载具有正确尺寸的图像?

4 个答案:

答案 0 :(得分:21)

我的解决方案:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;               
Bitmap bitmap = BitmapFactory.decodeResource(this.context.getResources(),  R.drawable.image, options );

答案 1 :(得分:12)

听起来您设备上的屏幕密度与创建image.png的密度不同。

如果您确实想要阻止缩放,可以尝试以下方法之一:

  1. 将图片放入res / drawable-nodpi(http://developer.android.com/guide/practices/screens_support.html#qualifiers

  2. 使用ImageView.ScaleType.CENTER(http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

  3. 刚刚在SO上发现了这个相关问题:Android: How to stop Android 1.6+ from scaling images

答案 2 :(得分:4)

BitmapFactory中的Beause加载程序在加载期间应用屏幕密度缩放。 要覆盖它,请在调用decodeResource的BitmapFactory.Options中提供自己想要的inTargetDensity。

答案 3 :(得分:0)

  

位图thumbImage =   Bitmap.createScaledBitmap(BitmapFactory.decodeResource(context.getResources(),   R.drawable.image),640、640,否);