Неправильные размеры изображения в android при использовании растрового изображения

Я имею файл изображения .png, хранящийся в качестве ресурса в приложении для Android. В моем коде я размещаю новый экземпляр Bitmap из этого изображения следующим образом:

Bitmap img = BitmapFactory.decodeResource(getResources(), R.drawable.imgName); 

Но когда я читаю размеры изображения из объекта Bitmap с использованием методов getWight () и getHeight ()

 int width = img.getWidth(); int height = img.getHeight(); 

Я получаю разные результаты от оригинального изображения … Может кто-нибудь объяснить мне, что мне не хватает, и как я могу получить размер изображения?

(Мой проект соответствует андроиду 2.2 – API 8)

Edit: Ok – выяснили, как получить реальные размеры: значение свойства BitmapFactory.Options класса BitmapFactory.Options true:

 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(getResources(), R.drawable.imgName, options); width = options.outWidth; height = options.outHeight; 

Проблема в том, что декодер возвращает null, когда мы отправляем Options , поэтому мне нужно снова декодировать, как раньше (без аргумента Options …) для извлечения экземпляра Bitmap -bizarre, не так ли?

Чтобы получить точное использование образа ресурса:

  BitmapFactory.Options o = new Options(); o.inScaled = false; Bitmap watermark = BitmapFactory.decodeResource(context.getResources(), id, o); 

Это отключает автоматическое масштабирование плотности экрана.

Обновление: я уверен, что вы поняли это до сих пор, но inJustDecodeBounds делает именно это, он находит размеры. Вы не получите изображение. Этот параметр обычно используется для пользовательского масштабирования. Вы в конечном итоге вызываете decodeResource дважды, второй параметр времени:

 options.inJustDecodeBounds = false; 

И внесение любых изменений в параметры, основанные на вашем:

 width = options.outWidth; height = options.outHeight; 

Android масштабирует ваше изображение для разных плотностей (в отличие от разных разрешений и размеров экрана). Поместите отдельную копию вашего изображения в drawable-ldpi, drawable-hdpi, drawable-xhdpi, доступные папки.