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

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

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

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

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

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

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

Обновить:

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

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

 res/drawable-nodpi/icon.png 

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