Bonjours tout le monde , je suis débutant pour programmation en java ,et j'ai un petit travail sur le tatouage numérique d'image par la méthode LSB, j'ai rencontré sur un problème au niveau de le phase d'extraction, j'ai inséré une image dans une autre, mais si je veux extraire l'image à inséré elle affiche l'image originale avec la couleur bleue, j’espère que je trouve la solution avec vous, et merci mes salutations.
voir d'abord le code de la méthode d'insertion:
Code java : 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 void caché(){ for(int y=0;y<height;y++){ for(int x=0;x<width;x++){ int part1=0,part2=0,part3=0; if(pointDansImage(x, y)){ //l'image à insérer est converti au niveau de gris. part1= (getimgtatR(x, y)>>5); part2= (getimgtatR(x, y)& 24>>3); part3= (getimgtatR(x, y)& 7); } getRGB(x,y);//récupérer la valeur de pixel et mettre dans un tableau rgb. rgb[0]&=248;//rouge. rgb[1]&=252;//vert. rgb[2]&=248;//bleu. rgb[0]= (rgb[0]|part1); rgb[1]= (rgb[1]|part2); rgb[2]= (rgb[2]|part3); setRGB(x, y);//fixer la valeur de pixel. } }
maintenant voir la méthode d'extraction :
Code java : 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 public extract_image(BufferedImage imagext){ this.image=imagext; larg=imagext.getWidth(); haut=imagext.getHeight(); argb=new int[3]; l=new int [larg*haut]; for (int i = 0; i < larg; i++) { for (int j = 0; j < haut; j++) { l[j*larg+i] = imagext.getRGB(i,j); } } for (int i = 0; i <haut; i++) { for (int j = 0; j < larg; j++) { getRGB(j, i); int part1=argb[0]& 7<<5; int part2=argb[1]& 3<<3; int part3=argb[2]& 7; argb[0]=part1;argb[1]=part2;argb[2]=part3; setRGB(j,i); } } updateImage(); }
Partager