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?
Ответы
Ответ 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