# Java > Interfaces Graphiques en Java > AWT/Swing >  [info] A quoi sert ImageObserver ?

## FrigoAcide

Salut  tous, 

je cre une instance d'une image avec la commande 

```
Image img = Toolkit.getDefaultToolkit&#40;&#41;.getImage&#40;"path"&#41;;
```

 puis j'aimerais connaitre les dimensios de cette image.

Les mthode getWidth() et getHeight() de la classe image prennent un ImageObserver en argument. Alors, qu'est-ce que c'est exactement ? J'imagine qu'il s'agit de la fentre la plus englobante de ma boite de dialogue. Mais la mthode fonctionne aussi si je lui passe un simple 'new JFrame()' en argument. Y'a t-il alors un risque d'obtenir les mauvaises dimensions de l'image ?

Merci !

----------


## Tifauv'

Il me semble que *ImageObserver* permet  Swing d'attendre que les images soient effectivement charges.
Je m'explique : quand tu dclares une image ( partir d'un fichier ou  URL), la JVM va charger la ressource correspondante dans une thread et rendre la main immdiatement, mme si l'image n'est pas entirement charge. Swing utilise un *ImageObserver* pour attendre la fin du chargement.

----------


## JHelp

En fait ce paramtre sert pour les cas ou l'image risque de ne pas tre prte au moment de l'invocation de ces mthodes. Par exemple pour une image charge, construite  partir de calculs, ... La taille renvoye dans ce cas est -1, et l'ImageObserver est modifi au moment ou l'image est prte.
En pratique cet argument sert trs rarement, car pour le chargement  distance on prfre utiliser MediaTracker ou ImageIcon et pour la construction un BufferedImage en gnral.
Tu peut mettre null, a fonctionne pareil.
ImageObserver sert plutt dans graphics pour prsiser le composant ou on affiche, afin que la synchronization entre la fin deu dessin de l'image et l'affichage du composant se fasse correctement
JHelp

----------


## FrigoAcide

Donc il remplit les mmes fonctions que le MediaTracker, et il vaut mieux utiliser ce dernier  ::?: :

Merci pour vos rponses.

----------


## JHelp

Exact. Car MediaTracker va te permetre de mieux reprer la fin de chargement, voir attendre la fin du chargement. Tandis qu'un ImageObserver va t'obliger a faire une boucle d'attente ou une boucle de vrifiaction, c'est moins propre et plus consomateur en CPU
JHelp

----------

