Android. Получение размера изображения из его идентификатора ресурса - PullRequest
24 голосов
/ 11 марта 2012

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

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 ?

Ответы [ 2 ]

45 голосов
/ 11 марта 2012

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

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

РЕДАКТИРОВАТЬ:

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

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;
11 голосов
/ 03 августа 2012

Для тех, кто не читал комментарии 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
...