From a11590dc3fbc72c1f07a29c608627a1f82080ff2 Mon Sep 17 00:00:00 2001 From: youness Date: Sat, 20 Dec 2025 11:54:06 +0100 Subject: [PATCH 1/4] mise a jour du travail apres visualisation du diagrame --- src/fr/iutfbleau/sae/ConverterController.java | 17 +++++++++ src/fr/iutfbleau/sae/mimage/Pixel.java | 34 +++++++++++++++++- src/fr/iutfbleau/sae/mimage/RGBImage.java | 36 +++++++++---------- 3 files changed, 68 insertions(+), 19 deletions(-) diff --git a/src/fr/iutfbleau/sae/ConverterController.java b/src/fr/iutfbleau/sae/ConverterController.java index 5f0bf03..b1698d2 100644 --- a/src/fr/iutfbleau/sae/ConverterController.java +++ b/src/fr/iutfbleau/sae/ConverterController.java @@ -1,6 +1,23 @@ package fr.iutfbleau.sae; +import java.awt.*; +import java.io.*; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; public class ConverterController { + + public BufferedImage loadImage(File f){ + //verification si le fichier contient quelque chose, si il est exesistant et si c'est un fichier "normal" d'apres la javadoc. + if (f == null || !f.exists() || !f.isFile()) { + return null; + } + BufferedImage image; + try { + image = ImageIO.read(f); + } catch (IOExeption e){ + return null; + } + return image; } diff --git a/src/fr/iutfbleau/sae/mimage/Pixel.java b/src/fr/iutfbleau/sae/mimage/Pixel.java index 63ac671..f4f37e1 100644 --- a/src/fr/iutfbleau/sae/mimage/Pixel.java +++ b/src/fr/iutfbleau/sae/mimage/Pixel.java @@ -1,4 +1,36 @@ package fr.iutfbleau.sae; -public class Pixel { +public class Pixel{ + private int r; + private int g; + private int b; + + //à completer + public Pixel(){ + + } + + public int getB() { + return b; + } + + public int getG() { + return g; + } + + public int getR() { + return r; + } + + public void setR(int r) { + this.r = r; + } + + public void setB(int b) { + this.b = b; + } + + public void setG(int g) { + this.g = g; + } } \ No newline at end of file diff --git a/src/fr/iutfbleau/sae/mimage/RGBImage.java b/src/fr/iutfbleau/sae/mimage/RGBImage.java index df20cea..a0b99e4 100644 --- a/src/fr/iutfbleau/sae/mimage/RGBImage.java +++ b/src/fr/iutfbleau/sae/mimage/RGBImage.java @@ -1,24 +1,24 @@ package fr.iutfbleau.sae; -import java.awt.*; -import java.io.*; -import javax.imageio.ImageIO; -import java.awt.image.BufferedImage; - public class RGBImage { - public BufferedImage chargementDeImage(File f){ - //verification si le fichier contient quelque chose, si il est exesistant et si c'est un fichier "normal" d'apres la javadoc. - if (f == null || !f.exists() || !f.isFile()) { - return null; - } - BufferedImage image; - try { - image = ImageIO.read(f); - } catch (IOExeption e){ - return null; - } - return image; -//a completer encore + private int width; + private int height; + private Pixel [] pixels + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + public Pixel[] getPixels() { + return pixels; + } + + public void setPixels(Pixel[] pixels) { + this.pixels = pixels; } } \ No newline at end of file From 58f6c7476172fd211aeae26a319b1a994f079bb3 Mon Sep 17 00:00:00 2001 From: Ayoub ANHDIRE Date: Sat, 20 Dec 2025 14:01:36 +0100 Subject: [PATCH 2/4] Codes HUFFMAN + Canoniques : OKKKKKK git add --allgit add --all --- .../iutfbleau/sae/mhuffman/CanonicalCode.java | 32 ++++++++++++++----- .../iutfbleau/sae/mhuffman/HuffmanTree.java | 10 +++--- src/fr/iutfbleau/sae/mimage/Pixel.java | 2 +- src/fr/iutfbleau/sae/mimage/RGBImage.java | 2 +- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java b/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java index e556f52..a57b8e1 100644 --- a/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java +++ b/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java @@ -1,22 +1,38 @@ package fr.iutfbleau.sae.mhuffman; - import java.util.*; public class CanonicalCode{ - private Map codeLenghts = HuffmanNode.getDictionnary(); + private Map codeLengths = HuffmanTree.getDictionnary(); private Map canonicalCodes = new HashMap<>(); - public void generateCodes(){ - // 1- Premiere chose à faire : trier les codes initiaux par longueur du code : + public Map generateCodes(){ + // 1 ere chose à faire : on regarde uniquement la longueur des codes initiaux(Huffman) + // 2eme chose à faire : remettre dans l'ordre des longueurs : si meme taille ==> regarder valeur + // 3eme chose à faire : ecriture des codes canoniques : - List codes = new ArrayList<>(); - codes = codeLenghts.keySet(); - int[] tab = code.toArray(new Integer[0]); - Arrays.sort(tab); + // on recupere les entrées des codes Huffman pour pouvoir les triés + List> liste = new ArrayList<>(codeLengths.entrySet()); + // ici on comparer par longueur de la valeur ou sinon par la clé + // type générique pour éviter les erreurs de compilation !!! + liste.sort(Comparator.>comparingInt(Map.Entry::getValue) + .thenComparing(Map.Entry::getKey)); + int code = 0; // code canonique à attribuer + int temp = 0; //garde la longueur du code précedent , pour gérer le décalage + for (Map.Entry entree : liste ) { + int valeur = entree.getKey(); // symbole actuel + int longueur = entree.getValue(); // longueur du code actuel + + code <<= (longueur - temp); // permet de décaler le code actuel si la longueur augmente + canonicalCodes.put(valeur,code); // ajout dans le dictionnaire + code++; // incrémentation pour la valeur qui suit + temp = longueur; // mise à jour de la longueur précedente + } + + return canonicalCodes; } diff --git a/src/fr/iutfbleau/sae/mhuffman/HuffmanTree.java b/src/fr/iutfbleau/sae/mhuffman/HuffmanTree.java index b4faec9..5081ede 100644 --- a/src/fr/iutfbleau/sae/mhuffman/HuffmanTree.java +++ b/src/fr/iutfbleau/sae/mhuffman/HuffmanTree.java @@ -57,7 +57,7 @@ public class HuffmanTree { /** * Dictionnaire pour enregistrer les codes Huffman */ - private Map codes; + private static Map codes; /** * Chaine de caracteres qui va nous permettre de sauvegader le code Huffman @@ -151,7 +151,7 @@ public class HuffmanTree { * @return Map on stockera les codes Huffman sous forme de dictionnaire */ - public Map generateCodes(){ + public Map generateCodes(){ /** * Le but de cette méthode est de pouvoir generer les codes Huffman à partir de l'arbre : * Les branches prendront comme valeur 1 ou 0 selon differents cas : @@ -164,7 +164,7 @@ public class HuffmanTree { this.chaineCarac = new String(); if(root.isLeaf()){ - codes.put(root.getValue(),chaineCarac); + codes.put(root.getValue(),Integer.parseInt(chaineCarac)); return codes; } @@ -192,8 +192,8 @@ public class HuffmanTree { } - public static Map getDictionnary(){ - return this.codes; + public static Map getDictionnary(){ + return codes; } diff --git a/src/fr/iutfbleau/sae/mimage/Pixel.java b/src/fr/iutfbleau/sae/mimage/Pixel.java index f4f37e1..54c3a98 100644 --- a/src/fr/iutfbleau/sae/mimage/Pixel.java +++ b/src/fr/iutfbleau/sae/mimage/Pixel.java @@ -1,4 +1,4 @@ -package fr.iutfbleau.sae; +package fr.iutfbleau.sae.mimage; public class Pixel{ private int r; diff --git a/src/fr/iutfbleau/sae/mimage/RGBImage.java b/src/fr/iutfbleau/sae/mimage/RGBImage.java index a0b99e4..3fc89e0 100644 --- a/src/fr/iutfbleau/sae/mimage/RGBImage.java +++ b/src/fr/iutfbleau/sae/mimage/RGBImage.java @@ -1,4 +1,4 @@ -package fr.iutfbleau.sae; +package fr.iutfbleau.sae.mimage; public class RGBImage { From 2844e3bbaa16b925800adef91a6e694824add6b3 Mon Sep 17 00:00:00 2001 From: Ayoub ANHDIRE Date: Sat, 20 Dec 2025 14:04:20 +0100 Subject: [PATCH 3/4] Actualiser PlaningDeTavail.md --- PlaningDeTavail.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PlaningDeTavail.md b/PlaningDeTavail.md index 756848b..9d976c1 100644 --- a/PlaningDeTavail.md +++ b/PlaningDeTavail.md @@ -23,10 +23,10 @@ Objectif : Mise en place des fondations techniques | US-D3 | AD | DONE | 🟩 | Générer les tables de fréquences RGB | | US-D4 | AD | DONE | 🟩 | Construire l’arbre Huffman | | US-D5 | AA | DONE | 🟩 | Générer les codes Huffman | -| US-D6 | AA | DOING | 🟨 | Générer les codes canoniques | +| US-D6 | AA | DONE | 🟩 | Générer les codes canoniques | | US-U5 | YB | DOING | 🟨 | Chargement d’image via ImageIO | | US-D8 | YB | TODO | 🟥 | Structure RGBImage + Pixel | -| US-P1 | AA | TODO | 🟥 | Interface simple d’affichage des fréquences | +| US-P1 | AA | DOING | 🟨 | Interface simple d’affichage des fréquences | | US-P2 | AD | DONE | 🟩 | Interface simple d’affichage codes Huffman | | US-P3 | AA | TODO | 🟩 | Interface simple d’affichage codes canoniques | From 2b299d4898289a2ad3dd3051277f92a136d0bf31 Mon Sep 17 00:00:00 2001 From: Ayoub ANHDIRE Date: Sat, 20 Dec 2025 14:10:15 +0100 Subject: [PATCH 4/4] Ajout de commentaires --- src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java b/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java index a57b8e1..d06a2ba 100644 --- a/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java +++ b/src/fr/iutfbleau/sae/mhuffman/CanonicalCode.java @@ -16,6 +16,7 @@ public class CanonicalCode{ // ici on comparer par longueur de la valeur ou sinon par la clé // type générique pour éviter les erreurs de compilation !!! + // referencement de méthode : passer une méthode déja existante liste.sort(Comparator.>comparingInt(Map.Entry::getValue) .thenComparing(Map.Entry::getKey));