Bonjour ,
j' essaye de mettre une petite image dans une grande, pour cela je colle le tableau de l'une dans l'autre,
j'ai une erreur à la compilation, ça fait un moment que je suis deçue je ne sais plus quoi faire...
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 255
at Bitmap.creerIncurstation(bitmap.java:30)
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 import java.io.*; import java.util.Scanner; 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]=250; this.data[x][y][1]=250; this.data[x][y][2]=250; } } this.nom=null; this.ie=new ImageExterneCree(this.data); } Bitmap creerIncurstation(Bitmap ImgLue){ for(int x=0;x<this.data.length;x++){ for(int y=0;y<this.data[0].length;y++){ this.data[x][y][0]=ImgLue.data[x][y][0]; this.data[x][y][1]=ImgLue.data[x][y][1]; this.data[x][y][2]=ImgLue.data[x][y][2]; } } this.nom=null; this.ie=new ImageExterneCree(this.data); ((ImageExterneCree)ie).changeImage(this.data); //demande de prendre en compte les changements return this; } }
la class imageExterneCree
la class ImageExterneLue
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 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); } void sauver(String s) throws IOException{ ImageIO.write(img,"jpeg",new File(s)); } }
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 import javax.imageio.*; import java.awt.image.*; import java.io.*; public class ImageExterneLue extends ImageExterne{ public ImageExterneLue(String nomf) throws IOException, FileNotFoundException{ img = ImageIO.read(new File(nomf)); this.showImage(); } public int[][][] getTableau(){ int wid, hei; wid = img.getWidth(); hei = img.getHeight(); int[][][] res = new int[wid][hei][3]; int[] rgb = img.getRGB(0,0,wid,hei,null,0,wid); for (int i=0; i<rgb.length; i++){ res[i%wid][i/wid][0]=rgb[i]>>16 & 0xFF; res[i%wid][i/wid][1]=rgb[i]>>8 & 0xFF; res[i%wid][i/wid][2]=rgb[i] & 0xFF; } return res; } }
Partager