Bonjour !
Dans le cadre de mes cours, je dois créer une classe permettant de charger/enregistrer des images aux format PPM. Jusque là pas trop dramatique mais j'ai une erreur que je ne m'explique pas.
Dans mon code (plus bas), je créé un tableau de tableau à partir d'une classe Pixels présente dans mon fichier mais lors de l'accés au tableau pour le remplir je reçois une belle erreur:
Mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 chouette2.ppm P3 # CREATOR: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) 170 115 255 Exception in thread "main" java.lang.NullPointerException at Image.readFile(Ppm.java:93) at Ppm.main(Ppm.java:126)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132 /* * Code pour le TP des cours de TDAI du CNAM : TP_004 * * Classe representant une image au format PPM avec ses methodes * de lecture et ecriture de fichier dans ce meme format. */ import java.io.*; class Pixels { short r; short g; short b; } class Image { /* * Donnees contenues dans un fichier PPM. */ String filename; String header; String comments; short width; short height; short bpp; Pixels [][] px; /* * Methode statique de lecture d'un fichier au format PPM. * Cette methode cree et renvoie egalement un objet de type Ppm. */ public void readFile (String filename) { int i = 0; int j = 0; int k = 0; String str; String [] parts; this.filename = filename; try { FileReader fr = new FileReader (filename); BufferedReader br = new BufferedReader (fr); /* * Donnes de l'entete du fichier PPM. */ this.filename = filename; System.out.println(filename); this.header = br.readLine (); System.out.println(this.header); this.comments = br.readLine (); System.out.println(this.comments); str = br.readLine (); parts = str.split (" "); this.width = Short.parseShort (parts [0]); System.out.print(this.width + " "); this.height = Short.parseShort (parts [1]); System.out.println(this.height); str = br.readLine (); this.bpp = Short.parseShort (str); System.out.println(this.bpp); this.px = new Pixels [this.height][this.width]; /* * Lecture de tous les pixels de l'images et remplissage * du tableau de pixels 'ppm.px'. */ str = br.readLine(); parts = str.split (" "); while (str != null) { if (j >= this.width) { i++; j = 0; } while (k < parts.length) { /* * ERREUR A PARTIR D'ICI ! */ this.px[i][j].r = Short.parseShort(parts[k++]); System.out.print(this.px[i][j].r + " "); this.px[i][j].g = Short.parseShort(parts[k++]); System.out.print(this.px[i][j].g + " "); this.px[i][j].b = Short.parseShort(parts[k++]); System.out.print(this.px[i][j].b); } System.out.println(" "); k = 0; j++; str = br.readLine(); parts = str.split (" "); } br.close (); } catch (IOException e) { System.out.println ( "Erreur pendant le chargement du fichier : " + filename + " : " + e ); } } } public class Ppm { public static void main (String [] args) { Image img = new Image(); img.readFile("chouette2.ppm"); } }
Voilà, je ne demande que ca, pourquoi ?
Merci bien![]()
Partager