Grand débutant cherche aide sur du BufferedImage [Résolu]

Signaler
Messages postés
56
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
4 janvier 2010
-
Messages postés
56
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
4 janvier 2010
-
Salut à tous,
Je suis débutant : ça fait 20 jours que je fais du java.
Voilà mon problème:
Une classe, dont le code-source est ci-après, est appelé par un autre programme en java. L'appel a l'air de bien se faire, mais c'est après que j'ai un problème (je l'ai positionné dans le code).
Est-ce que quelqu'un peut m'aider, c'est assez urgent...
Merci d'avance !
Mageti

import java.awt.*;
import java.awt.image.*;
import java.io.File;
import javax.swing.*;

public class CalculT2
{
public Image image,imge;
public BufferedImage imageBuffee;
public int largeur,hauteur; public int y,x;
public int[][] tableau=new int[largeur][hauteur];
public int numeroColonne, valeurFinale;
public JFrame fen;

public void calcul(File f,boolean auto,int texSec,String ur,JFrame fen)
{
System.out.println("calcul"+f+"\n"+auto+"\n"+texSec+"\n"+ur);
ouvreImage(ur);
toBufferedImage(image);
imageEnTableau(imageBuffee);
trouveLimGauche(tableau);
renvoiValeur(numeroColonne);
}

public void ouvreImage(String ur){

Toolkit toolkit = Toolkit.getDefaultToolkit();
/* lecture de l'image : */
image = toolkit.getImage(ur);
}

public BufferedImage toBufferedImage(Image image) {

imge = new ImageIcon(image).getImage();

BufferedImage imageBuffee = new BufferedImage( imge.getWidth(null), imge.getHeight(null), BufferedImage.TYPE_INT_ARGB );
Graphics g = imageBuffee.createGraphics();
g.drawImage(imge,0,0,null);
g.dispose();

return(imageBuffee);

}

public void imageEnTableau(BufferedImage imageBuffe){

largeur=imageBuffe.getWidth();\\Problème!!
hauteur=imageBuffe.getHeight();
WritableRaster raster=imageBuffe.getRaster();
int[] color=new int[4];
int z=0;
for (y=0;y<=hauteur;y++)
{
int ilYAUnUn=0;
for (x=0;x<=largeur;x++)
{
raster.getPixel(x,y,color);
if (color[3]>127)
{ tableau[x][z]=1;
ilYAUnUn++;
}else{tableau[x][z]=0;}

}
if (ilYAUnUn>=(largeur/10))
{z++;}
}
}

public void trouveLimGauche(int[][] tableau){
boolean stop=false;
for (x=0;x<=largeur && stop==true;x++){
int ilYAUnUn=0;
for (y=0;y<=hauteur;y++){
if (tableau[x][y]==1)
{ilYAUnUn++;}
}
if (ilYAUnUn>=(hauteur/2)){
stop=true;
numeroColonne=x;
}
}
}

public void renvoiValeur(int numeroColonne){
valeurFinale=(numeroColonne-(largeur/2));
}
}

4 réponses

Messages postés
649
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
9 septembre 2004
7
imageEnTableau(imageBuffee); =>

ton BufferedImage imageBuffe n'est jamais initialise....
Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
Oui : quand tu initialise ton tableau

public int[][] tableau=new int[largeur][hauteur];


Les champs largeur et hauteur ont été déclarés, mais tu ne leur a affecté aucune valeur.
Messages postés
56
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
4 janvier 2010

Ok, merci,
Mais je rencontre un autre problème au niveau du tableau[x][y]=1, est-ce la même cause ?
Mageti
Messages postés
56
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
4 janvier 2010

Merci beaucoup ! :)