diff --git a/src/fr/iutfbleau/sae/mpif/PIFWriter.java b/src/fr/iutfbleau/sae/mpif/PIFWriter.java index 72b4eda..094fc81 100644 --- a/src/fr/iutfbleau/sae/mpif/PIFWriter.java +++ b/src/fr/iutfbleau/sae/mpif/PIFWriter.java @@ -6,8 +6,26 @@ import java.io.FileOutputStream; import java.io.IOException; import java.util.Map; +/** + * Cette classe permet d'ecrire une image RGB dans un fichier .pif. + * Elle réalise l'encodage de l'image en utilisant des codes canonique pour les composante rouge vert et bleu. + * Elle écrit succesivement l'entête du fichier, les tables des longueures des codes cannonique, puis les pixels encodée bit à bit. + * Elle est utilisée lors de la compression d'une image vers le format .pif. + * @author Algasimou Ayoub Youness + */ public class PIFWriter { + /** + * Cette methode sert de pooint d'entre pour l'encodage d'une image en .pif. + * Elle crée des flux de sortie, écrit l'en tête, les tables cannonique puis encode tous les pixels de l'image + * + * @param filepath chemin du fichier .pif a creer + * @param image image rgb a encoder + * @param canonR table des des codes cannonique rouge + * @param canonG table des codes cannonique vert + * @param canonB table des codes cannonique bleu + * @throws Exception si il ya une erreur lors de l'ecriture de fichier avec les rgb + */ public void writeTOFile(String filepath, RGBImage image, Map canonR, Map canonG, @@ -32,6 +50,14 @@ public class PIFWriter { } // Ecriture de l'en-tête du fichier PIF (largeur et hauteur) + + /** + * Ecrit l'en tête du fichier .pif. + * L'en tête contient la hauteur et la largeure de l'image chacune codée sur 16bits. + * @param out flux binaire de sortie + * @param width largeur de l'image + * @param height hauteur de l'image + */ public void writeHeader(BitOutputStream out, int width, int height) { try { out.writeBits(width, 16); @@ -41,6 +67,15 @@ public class PIFWriter { } } + /** + * Ecrit les tables des longueurs des codes cannoniques. + * pour chaque composante RGB, on assosie 256 valeurs correspondante au bits que contiennent les RGB + * EX: le blanc est associe a 0xFFFFFF : 255.255.255 : 1111 1111.1111 1111.1111 1111. + * @param out flux binaire de sortie + * @param canonR table des codes cannonique rouge + * @param canonG table des codes cannonique vert + * @param canonB table des codes cannonique bleu + */ public void writeTables(BitOutputStream out, Map canonR, Map canonG, Map canonB) { @@ -81,6 +116,16 @@ public class PIFWriter { } // Méthode pour encoder les pixels de l'image en utilisant les codes canoniques + + /** + * Encode les pixels de l'image et les ecrit dans un fichier .pif. + * l'image est parourue ligne per ligne et pour chaque pixel nous pouvons retrouver les composante RGB ecrite a l'aide de leurs codes cannonique. + * @param out flux binaire de sortie + * @param image image de base a encoder pour recuperer la taill la largeur... + * @param canonRED table des codes cannonique rouge + * @param canonGREEN table des codes cannonique vert + * @param canonBLUE table des codes cannonique bleu + */ public void encodePixels(BitOutputStream out, RGBImage image, Map canonRED, Map canonGREEN,