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

Android. Получение размера изображения с его идентификатора ресурса

Это часть моей деятельности:

private ImageView mImageView;
private int resource;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  resource = getIntent().getIntExtra("res", -1);

  Matrix initMatrix = new Matrix();

  mImageView = new ImageView(getApplicationContext());
  mImageView.setScaleType( ImageView.ScaleType.MATRIX );
  mImageView.setImageMatrix( initMatrix );
  mImageView.setBackgroundColor(0);
  mImageView.setImageResource(resource);
}

Я пытаюсь отобразить изображение в ImageView, используя матрицу как тип шкалы (я хочу добавить мультитач позже). Но прежде чем пользователь начнет взаимодействие, я хочу, чтобы изображение было центрировано и помещено внутри ImageView. Я уже нашел ответы о том, как его решить, но для меня есть одна проблема: Чтобы сделать изображение центрированным с использованием матрицы, мне нужно знать его ширину и высоту. Есть ли способ получить размер изображения, когда все, что у вас есть, int resource?

4b9b3361

Ответ 1

Используйте BitmapFactory.decodeResource для получения объекта Bitmap ресурса, а затем из растрового изображения вы можете легко получить ширину/высоту изображения с помощью getHeight и getWidth

Также не забудьте recycle ваш растровый рисунок

EDIT:

Таким образом вы получите растровое изображение null в качестве вывода, но BitmapFactory.Options будут установлены с помощью and и для растрового изображения. Итак, в этом случае вам не нужно перерабатывать растровое изображение

BitmapFactory.Options dimensions = new BitmapFactory.Options(); 
dimensions.inJustDecodeBounds = true;
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap, dimensions);
int height = dimensions.outHeight;
int width =  dimensions.outWidth;

Ответ 2

Для тех, кто не читал комментарий dmon. Код для этого выглядит следующим образом:

final Options opt = new BitmapFactory.Options();
opt.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.drawable.your_photo, opt);

opt.outHeight; // height of resource
opt.outWidth; // width of resource