ImageIO : IOException puis NullPointerException
Bonjour,
Je tente de créer l'image (fichier jpg) d'un composant par la méthode :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| /** Crée l'image d'un composant. Source trouvée sur "http://java.developpez.com/faq/gui/?page=generalitesAWTSwing#GRAPHIQUE_AWT_enregistrer_image".
*/
private void créerImage(Component component) {
BufferedImage image = new BufferedImage(component.getWidth(), component.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
if(!component.isOpaque()){
Color bg = component.getBackground();
bg = (bg.getAlpha() < 255) ? new Color(bg.getRed(), bg.getGreen(), bg.getBlue()) : bg;
Color color = g2d.getColor();
g2d.setColor(bg);
g2d.fillRect(0, 0, component.getWidth(), component.getHeight());
g2d.setColor(color);
}
component.paint(g2d);
g2d.dispose();
try {
this.fichierImage = new File("c:/REP" + '/' + this.nomImage + ".jpg");
ImageIO.write(image, "jpeg", this.fichierImage);
} catch (IOException e) {
e.printStackTrace();
}
} |
Le problème, c'est que le répertoire "c:/REP/" n'existe pas. J'obtiens bien une IOException (FileNotFoundException). Mais mon problème est le suivant : Juste derrière, j'obtiens un NullPointerException :
Code:
1 2 3
| Caused by: java.lang.NullPointerException
at javax.imageio.ImageIO.write(Unknown Source)
at plado.ressources.PMigEdition.créerImage(PMigEdition.java:203) |
En debug, je pense avoir trouvé la ligne provoquant l'exception :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| //Classe ImageIO :
public static boolean write(RenderedImage im,
String formatName,
File output) throws IOException {
if (output == null) {
throw new IllegalArgumentException("output == null!");
}
ImageOutputStream stream = null;
try {
output.delete();
stream = createImageOutputStream(output);
} catch (IOException e) {
throw new IIOException("Can't create output stream!", e);
}
boolean val;
try {
val = write(im, formatName, stream);
} finally {
stream.close(); // ICI
}
return val;
} |
J'aimerais comprendre ce qu'il se passe, si ce NullPointerException est normal ? Où ai-je fait une faute ?