11

嗨,我正在从名为 .png 的 png 图像创建位图image.png。图像的尺寸为 75(宽)x 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

4 回答 4

28

我的解决方案:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;               
Bitmap bitmap = BitmapFactory.decodeResource(this.context.getResources(),  R.drawable.image, options );
于 2012-11-29T08:39:55.697 回答
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

于 2011-09-09T15:19:18.963 回答
4

因为 BitmapFactory 中的加载器在加载期间应用屏幕密度缩放。要覆盖这一点,请在调用 decodeResource 时在 Bi​​tmapFactory.Options 中提供自己所需的 inTargetDensity。

于 2011-09-09T15:19:33.103 回答
0

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

于 2018-08-12T08:13:49.113 回答