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
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 );
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