Как получить ширину и высоту изображения в андроиде?
В моем коде у меня есть Image View
в моем макете XML, и я продолжаю изменять исходное изображение для этого в своем коде. Теперь я хочу знать ширину и высоту сгенерированного изображения каждый раз.
Я попытался использовать getWidth()
, getHeight(),
getMeasuredWidth(),
и getMeasuredHeight()
, но все они возвращают 0.
Как я могу получить это?
Ответы
Ответ 1
Где вы вызываете getWidth()
и getHeight()
в ImageView? Если вы вызываете из onCreate()
в действие, это не сработает. Вам нужно подождать, пока окно активности не будет подключено, а затем вызовите getWidth() and getHeight()
в ImageView. Вы можете попробовать вызвать метод getWidth() and getHeight()
из onWindowFocusChanged()
вашего действия.
@Override
public void onWindowFocusChanged(boolean hasFocus){
int width=imageView.getWidth();
int height=imageView.getHeight();
}
Ответ 2
попробуйте это
ImageView iv=(ImageView)findViewById(R.id.image);
ViewTreeObserver vto = iv.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
finalHeight = iv.getMeasuredHeight();
finalWidth = iv.getMeasuredWidth();
Log.e("hilength","Height: " + finalHeight + " Width: " + finalWidth);
return true;
}
});
Ответ 3
попробуйте этот код
int finalHeight, finalWidth;
final ImageView iv = (ImageView)findViewById(R.id.scaled_image);
final TextView tv = (TextView)findViewById(R.id.size_label);
ViewTreeObserver vto = iv.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
iv.getViewTreeObserver().removeOnPreDrawListener(this);
finalHeight = iv.getMeasuredHeight();
finalWidth = iv.getMeasuredWidth();
tv.setText("Height: " + finalHeight + " Width: " + finalWidth);
return true;
}
});
он действительно работает...
Ответ 4
если вы установите ImageView как drawable, а тип высоты и ширины ImageView - WRAP_CONTENT, вы можете получить высоту и ширину ImageView, даже если вы звоните из onCreate()
int height = imageView.getDrawable().getIntrinsicHeight();
int width = imageView.getDrawable().getIntrinsicWidth();
Ответ 5
То, как вы делаете ссылку на объект изображения, неверно. Вот почему вам дают ноль все время. сначала создайте растровый объект из изображения и получите от него ширину и высоту.
Когда вы снимаете изображение с камеры, я делаю следующее и работает как шарм.
Bitmap image2 = (Bitmap) data1.getExtras().get("data");
double width = Double.valueOf(image2.getWidth());
Log.v("WIDTH", String.valueOf(width));
double height = Double.valueOf(image2.getHeight());
Log.v("height", String.valueOf(height));
Надеюсь, это поможет вам.
Ответ 6
Сначала вам нужно преобразовать изображение в mutablebitmap и попытаться получить ширину и высоту изображения, и в основном это решит вашу проблему.
Bitmap Rbitmap = Bitmap.createBitmap(bitmap).copy(
Config.ARGB_4444, true);
Rbitmap.getWidth();
Rbitmap.getheight();
Ответ 7
Попробуйте это решение:
Bitmap bitmap = ((BitmapDrawable)imageView.getBackground()).getBitmap();
int width = bitmap.getWidth();
int height = bitmap.getHeight();