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

Как получить ширину и высоту изображения в андроиде?

В моем коде у меня есть Image View в моем макете XML, и я продолжаю изменять исходное изображение для этого в своем коде. Теперь я хочу знать ширину и высоту сгенерированного изображения каждый раз.

Я попытался использовать getWidth(), getHeight(), getMeasuredWidth(), и getMeasuredHeight(), но все они возвращают 0.

Как я могу получить это?

4b9b3361

Ответ 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();