Подтвердить что ты не робот

Bitmap getWidth возвращает неверное значение

У меня есть jpg-изображение в моей папке с возможностью обращения с Android, разрешение которой составляет 1000x600. Я загружаю это изображение в растровое изображение, подобное этому

 Bitmap bitMap = BitmapFactory.decodeResource(getResources(), R.drawable.image);

После этого я вызываю bitMap .getWidth(), который возвращает 1500. Как это может быть? И как получить правильную ширину и высоту изображения?

4b9b3361

Ответ 1

Это, вероятно, связано с различной плотностью. Вероятно, ваш ресурс хранится в папке со средней плотностью, но ваше устройство - hdpi. Средняя плотность 160dpi, высокая плотность 240dpi. Таким образом, ваше растровое изображение масштабируется до 1,5x размера, изначально это было. Дополнительную информацию см. В документе на нескольких экранах.

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

Если вы предполагали, что это для высокой плотности, поместите его в drawable-hdpi вместо drawable или drawable-mdpi.

Update:

Если вы хотите, чтобы он игнорировал плотность, поместите ее в папку drawable-nodpi. Также из одного документа:

Самый простой способ избежать предварительного масштабирования - разместить ресурс в каталоге ресурсов с помощью спецификатора конфигурации nodpi. Например:

res/drawable-nodpi/icon.png

Когда система использует растровое изображение icon.png из этой папки, оно не масштабирует его на основе текущей плотности устройства.