Bonjour à tous, j'ai un petit soucis lorsque je lis un ppm (en gros un fichier ascii représentant des triplets RGB et donc une image)
Le code suivant (simplifié à outrance) ne lit pas tout mon fichier, il s'arrête en plein dedans.
Bon dans le code qui suit ca manque de "fiabilité" pour les premiers readline, mais c'est pas le sujet
Ce que fait ce code : il recopie sur un terminal les lignes du fichier, sauf qu'à un moment, vers les lignes 2650-2700, on sort du while et le prog se termine.
Le fichier n'a rien d'anormal à cet endroit (pas de caractères spéciaux, lignes identiques à ce qui précède et à ce qui suit)
Code :
- public void loadPPM(File file) throws Exception {
- BufferedReader br = new BufferedReader(new FileReader(file));
- StringTokenizer tokenizer;
- String l = br.readLine();
- //P3 : XXX
- if (l.equals("P3" )) {
- //Coordonnée du pixel courant
- int x = 0;
- int y = 0;
- // On lit la première ligne ici après "P3"
- l = br.readLine();
- // On ignore les commentaires
- while (l.substring(0,1).equals("#" )) {
- l = br.readLine();
- }
- // Ici l est donc la première ligne UTILE
- // On récupère la taille de l'image
- tokenizer = new StringTokenizer(l, " " );//XXX portable?
- String widthString = tokenizer.nextToken();
- String heightString = tokenizer.nextToken();
- int width = Integer.parseInt(widthString);
- int height = Integer.parseInt(heightString);
- System.out.println("XXXXXX : " + width + " " + height);
- // On peut créer la buffered image (sans transparence)
- bfi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
- //On récupère la valeur max : XXX
- l = br.readLine();
- //Maintenant qu'on commence le traitement des lignes il faut :
- // récupèrer un triplet
- // afficher son pixel correspondant
- // etc...
- //Pour stocker le triplet en cours de traitement
- int[] rgb = new int[3];
- while( (l=br.readLine()) != null && !l.equals("" ) ) {
- System.out.println("in ze while : "+x+" "+y+" : "+l);
- // CODE COMMENTE CAR GROS ET INUTILE
- // (ici x et y sont incrémentés)
- }
- }
- // Pas "P3"
- else {
- return;
- }
- }
|
Si qqun a une idée pour lire le fichier en entier, ca m'intéresse
Merci d'avance
Message édité par Xavier_OM le 03-03-2005 à 13:22:01
---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.