# Java > Interfaces Graphiques en Java > AWT/Swing >  [IMAGE] Comment obtenir hauteur largeur d'une image ??

## pouillou

Je cherche comment obtenir la hauteur et la largeur d'une image !! a parait tout bete mais j'y arrive pas...(je dbute un peu  ::oops:: )

Voil ce que j'ai : 


```

```

Mais a me sort une erreur au 2 dernires lignes et je ne sais pas comment l'enlever, si qqun peut me dire aussi a quoi a sert ImageObserver ?? 

Merci

----------


## mavina

Coucou,




> ```
> 
> ```




```

```

Mieux vaut utiliser ImageIO plutot que le toolkit par dfaut..
Si encore erreur, copie colle la nous, nous ne sommes pas devins  ::mouarf::  

mavina

----------


## pouillou

le code suivant ne marche pas (filePath un String du chemin du fichier image)



```

```

au 2 dernires lignes j'ai l'erreur suivante :


```

```

J'ai pas mal cherch, pas de rponses satisfaisantes, je ne sais plus quoi faire, pourtant il n'y a que 3 lignes........................ ::cry::

----------


## adiGuba

Salut,

Il n'y a pas de mthode *getWidth()* et *getHeight()* sans paramtre dans la classe *Image* : ces mthodes attendent un *ImageObserver* en paramtre mais tu peux utiliser *null* :


```

```

L'interface *ImageObserver* permet d'tre tenu inform du chargement de l'image.
En effet lorsque tu charges une image avec le *Toolkit* en ralit l'image n'est pas charg de suite, mais seulement lorsque tu en as besoin (ce principe permet d'amliorer un peu le chargement des Applets, puisque ton code continue  s'excuter pendant que les images sont tlcharg en tche de fond...

Ainsi plusieurs mthodes qui travaillent sur des images attendent un ImageObserver, et renvoit une valeur bidon si l'image n'est pas encore charg (-1 pour *getWidth()* et *getHeight()*).

En gnral on se sert de cela pour rappeller la mthode plus tard . Par exemple tous les composant *AWT* et *Swing* implmente cette interface et rappelle *paint()* (ou *paintComponent()*) lorsque une image est charg, cela permet de faire ceci par exemple :


```

```

Si l'image n'est pas charg drawImage ne fera rien, mais enverra une notification  l'ImageObserver *this* qui rappelleta la mthode *paintComponent()* et donc cela affichera l'image...


Maintenant tu n'est pas oblig d'utiliser *ImageObserver*, et en particulier si tu utilises *ImageIO* puisque cette classe charge l'image entirement (tu ne recevra donc jamais de -1).

a++

----------

