BitmapFactory возвращает изображение большего размера, чем исходный код


Привет я создаю растровое изображение из png-изображения с именем image.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 х 92. Что я могу сделать, чтобы android загрузил изображение с правильным размером?
4 7

4 ответа:

Похоже, что плотность экрана на вашем устройстве отличается от плотности изображения.png был создан.

Если вы действительно хотите предотвратить масштабирование, вы можете попробовать одно из следующих действий:

  1. Поместите изображение в res / drawable-nodpi (http://developer.android.com/guide/practices/screens_support.html#qualifiers)

  2. Используйте ImageView.ScaleType.ЦЕНТР (http://developer.android.com/reference/android/widget/ImageView.ScaleType.html)

  3. Только что нашел этот связанный вопрос на SO: Android: Как остановить Android 1.6+ от масштабирования изображений

Мое решение:

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

Beause loader в BitmapFactory применяет масштабирование плотности экрана во время загрузки. Чтобы переопределить это, предоставьте собственную желаемую inTargetDensity в BitmapFactory.Опции в вызове decodeResource.

Растровое изображение большого пальца = Растровый.createScaledBitmap (BitmapFactory.decodeResource (контекст.getResources(), Р. рисуемый.изображение), 640, 640, ложь);