SHOW:
|
|
- or go back to the newest paste.
| 1 | - | 20 public class Stegano {
|
| 1 | + | 27 public void EcrireTexte(String texte, BufferedImage image) |
| 2 | 28 {
| |
| 3 | - | 24 public static void main(String args[]) {
|
| 3 | + | 29 int ecraser = JOptionPane.YES_OPTION; |
| 4 | - | 25 } |
| 4 | + | 30 if(TagPresent(image)) ecraser = JOptionPane.showOptionDialog(null, "Photo déjà taguée ! Ecraser ?", |
| 5 | - | |
| 5 | + | 31 "Le Grand Choix", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, null, null); |
| 6 | - | 27 public void EcrireTexte(String texte, BufferedImage image) |
| 6 | + | 32 if(ecraser == JOptionPane.YES_OPTION) {
|
| 7 | 33 texte = "stg" + texte + '#'; | |
| 8 | - | 77 public String LireTexte(BufferedImage image) |
| 8 | + | 34 int l_mot = 8*(texte.length()); |
| 9 | 35 int motBinaire[] = new int[(l_mot/3+3)*3]; //Il faut calculer la taille du mot de sorte à ce que la boucle ne déborde pas | |
| 10 | - | 113 public void EffacerTags(BufferedImage image) |
| 10 | + | 36 TexteEnBinaire(texte, motBinaire, l_mot); //Conversion du texte en binaire |
| 11 | ||
| 12 | - | 144 private void TexteEnBinaire(String texte, int tableau[], int taille) |
| 12 | + | 43 for(int n=0;n<=(l_mot/3)+1;n++) //Pour un nombre de pixels égal au nombre de bits divisé par 3 |
| 13 | 44 {
| |
| 14 | - | 160 private String BinaireEnTexte(int binaire[]) |
| 14 | + | 45 couleurs = tramePixels.getDataElements(n%image.getWidth(), n/image.getHeight(), null); //On récupère la palette d'un pixel |
| 15 | 46 composante[0]=modelCouleur.getRed(couleurs); //On récupère le rouge | |
| 16 | - | 178 public boolean TagPresent(BufferedImage image) |
| 16 | + | 47 composante[1]=modelCouleur.getGreen(couleurs); //Et le vert |
| 17 | - | |
| 17 | + | 48 composante[2]=modelCouleur.getBlue(couleurs); //Et aussi le bleu |
| 18 | - | 195 public boolean CorrespondanceTags(String cles, String tags) |
| 18 | + | 49 |
| 19 | 50 for(int i=0;i<=2;i++) | |
| 20 | - | 249 } |
| 20 | + | 51 {
|
| 21 | 52 switch(motBinaire[j]) {
| |
| 22 | 53 case 1: | |
| 23 | 54 if(composante[i]%2 == 0) {
| |
| 24 | 55 if(composante[i] != 255) composante[i]++; | |
| 25 | 56 else composante[i]--; | |
| 26 | 57 } | |
| 27 | 58 break; | |
| 28 | 59 case 0: | |
| 29 | 60 if(composante[i]%2 == 1) {
| |
| 30 | 61 if(composante[i] != 255) composante[i]++; | |
| 31 | 62 else composante[i]--; | |
| 32 | 63 } | |
| 33 | 64 break; | |
| 34 | 65 } | |
| 35 | 66 j++; | |
| 36 | 67 } | |
| 37 | 68 nouvelleCouleur = new Color(composante[0], composante[1], composante[2]); //On recréé une couleur à partir de l'ancienne | |
| 38 | 69 rvb = nouvelleCouleur.getRGB(); | |
| 39 | 70 couleurs = modelCouleur.getDataElements(rvb, null); | |
| 40 | 71 tramePixels.setDataElements(n%image.getWidth(), n/image.getHeight(), couleurs); // On l'écrit dans le pixel | |
| 41 | 72 } | |
| 42 | 73 image.setData(tramePixels); | |
| 43 | 74 } | |
| 44 | 75 } |