- But...
Présentation des notions de base pour lire des images dans une applet ou une application sans recevoir de messages d'erreurs.
- La lecture dans une applet...
tipsImg1.java : Télécharger le source ou
Voir l'applet
// Importations
import java.awt.Graphics ;
import java.awt.Image ;
public class tipsImg1 extends java.applet.Applet {
// Variables
Image img ; // ...
// Initialisation de l'applet
public void init() { // Methode init()
// Lecture de l'image
// Le getCodeBase() permet de specifier l'emplacement
// de l'image relativement au code de l'applet
img = getImage(getCodeBase(), "./photo.gif") ;
}
// Dessiner l'applet
public void paint(Graphics g) { // Methode paint()
// On dessine l'image a la position 5/10
g.drawImage(img, 5, 10, this) ;
}
}
|
Ce code vraiment très simple vous permet de lire un fichier image (gif dans l'exemple) et de l'afficher. Il est possible que l'applet affiche un
NullPointerException car on lui demande d'afficher l'image sans savoir si elle est entièrement chargée.
- Ajout d'un MediaTracker...
tipsImg2.java : Télécharger le source ou
Voir l'applet
// Importations
import java.awt.MediaTracker ;
....
public void init() {
MediaTracker trk = new MediaTracker(this) ;
// Lecture de l'image
img = getImage(getCodeBase(), "./photo.gif") ;
// Ajout de l'image dans le MediaTracker
trk.addImage(img, 0) ;
// Attendre le chargement
try {
trk.waitForAll() ;
} catch (InterruptedException e) {
// Traitement de l'erreur
}
}
...
|
Si en execution "locale" ou avec de petites images nous ne voyons pas de différence, il suffit d'essayer de charger une image importante
(ou plusieurs) pour que cela supprime l'erreur "NullPointerException".
- Passage à une application...
tipsImg3.java : Télécharger le source ou
tipsImg3.zip l'application (backup)
Je ne detaille que les modifications propres à la gestion des images
// Importations
import java.awt.Toolkit ;
....
public void init() {
MediaTracker trk = new MediaTracker(this) ;
// Recuperation du Toolkit de default de l'application
Toolkit toolkit = Toolkit.getDefaultToolkit() ;
// Lecture de l'image
// On doit passer par le toolkit dans le cas d'une l'application
img = toolkit.getImage("./photo.gif") ;
// Ajout de l'image dans le MediaTracker
trk.addImage(img, 0) ;
// Attendre le chargement
try {
trk.waitForAll() ;
} catch (InterruptedException e) {
// Traitement de l'erreur
}
}
...
|
Vous pouvez remarquer que la seule modification pour lire une image dans une application concerne l'utilisation
du Toolkit, et la suppression du getCodeBase().
|