artemis01
Messages postés5Date d'inscriptionsamedi 26 mars 2011StatutMembreDernière intervention26 juin 2011
-
5 juin 2011 à 23:06
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 2012
-
6 juin 2011 à 22:17
Bonjour, je m'en sort pas avec cette methode qui me produit une erreur :
MonTest4.java:87: cannot find symbol
symbol : method sauver(java.lang.String)
location: class Bitmap
dans mon main j'ai :
Bitmap[]mesImages=new Bitmap[2];
un tableau d'images de type Bitmap, j'ai une liste d'images qui s'affichent, je saisi le nom pour la sauvegarder
System.out.print("Numero de l'image à sauver:");
int imgsauver=sc.nextInt();
System.out.print("Nom du fichier:");
String s=sc.nextLine();
mesImages[imgsauver].sauver(s);
voici la class Bitmap:
public class Bitmap {
Scanner sc = new Scanner(System.in);
int[][][]data;
String nom;
ImageExterne ie;
Bitmap(String n) throws IOException, FileNotFoundException { // constructeur pour les images lues
this.ie=new ImageExterneLue(n);
this.nom=n;
this.data=((ImageExterneLue)ie).getTableau();
}
Bitmap(int largeur, int hauteur){ // constructeur pour les images créés
this.data=new int[largeur][hauteur][3];
for(int x=0;x<this.data.length;x++){
for(int y=0;y<this.data[0].length;y++){
this.data[x][y][0]=0;
this.data[x][y][1]=250;
this.data[x][y][2]=0;
}
}
this.nom=null;
this.ie=new ImageExterneCree(this.data);
}
et enfin la class ou est ecrite la methode sauver:
import javax.imageio.*;
import java.awt.image.*;
import java.io.*;
public class ImageExterneCree extends ImageExterne{
private int rgbColor(int[] t){
return (255<<24)+(t[0]<<16)+(t[1]<<8)+t[2];
}
public ImageExterneCree(int[][][] tab){
int wid, hei;
wid = tab.length;
hei = tab[0].length;
int[] rgb= new int[wid*hei];
for (int i=0; i<rgb.length; i++){
rgb[i]=rgbColor(tab[i%wid][i/wid]);
}
img = new BufferedImage(wid,hei,BufferedImage.TYPE_INT_RGB);
img.setRGB(0,0,wid,hei,rgb,0,wid);
this.showImage();
}
public void changeImage(int[][][] tab){
int wid, hei;
wid = tab.length;
hei = tab[0].length;
int[] rgb= new int[wid*hei];
for (int i=0; i<rgb.length; i++){
rgb[i]=rgbColor(tab[i%wid][i/wid]);
}
img = new BufferedImage(wid,hei,BufferedImage.TYPE_INT_RGB);
img.setRGB(0,0,wid,hei,rgb,0,wid);
mp.change(img);
}
public void sauver(String s) throws IOException{
ImageIO.write(img,"jpeg",new File(s));
}
}
Merci beaucoup pour votre aide
A voir également:
Appeler methode d'une class sur un objet d'une autre class
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 6 juin 2011 à 02:28
salut,
'mesImages[imgsauver].sauver(s);'
si j ai bien compris mesImages est un tableau de Bitmap... ;o) or la class Bitmap ne POSSEDE pas de méthode sauver...
de plus tu ne semble pas faire d instance de ImageExterneCree ... et cette class n ayant pas de methode static (pas forcement la meilleur soluce) ;o) ... ben c est vraiment cuit ;o)
il semble que quelque chose t ai un peu échapé ;o) dans la POO ;o) et dans la differenc entre une instance et une réference ;o) ...
donc
si tu veux garder ton ecriture du doit implementer "sauver" dans Bitmap...
mais tu peux aussi faire une méthode 'sauver' (static pour faire simple) qui prend un bitmap en parametre :
ImageExterneCree.sauver( mesImages[imgsauver], s );
artemis01
Messages postés5Date d'inscriptionsamedi 26 mars 2011StatutMembreDernière intervention26 juin 2011 6 juin 2011 à 21:47
Bonjour,
ça va beaucoup mieux après tes explications!
je débute et ça se voit!
ce n'est pas évident encore de jongler avec les class les methodes, objets, variables, je m'y perds