Class PIFWriter

java.lang.Object
fr.iutfbleau.sae.mpif.PIFWriter

public class PIFWriter extends Object
Cette classe permet d'écrire une image au format PIF. Le fichier PIF contient une en-tête avec la taille de l'image, les longueurs des codes canoniques, puis l'encodage des pixels en utilisant ces codes. Les méthodes de cette classe suivent l'ordre d'écriture du fichier : 1) écrire l'en-tête 2) écrire les tables de longueurs 3) encoder les pixels un par un
  • Constructor Details

    • PIFWriter

      public PIFWriter()
  • Method Details

    • writeTOFile

      public void writeTOFile(String filepath, RGBImage image, Map<Integer,String> canonR, Map<Integer,String> canonG, Map<Integer,String> canonB) throws Exception
      Sauvegarde une image au format PIF dans un fichier. Le fichier est créé ou écrasé si il existe déjà.
      Parameters:
      filepath - chemin du fichier à écrire
      image - l'image RGB à encoder
      canonR - codes canoniques de la composante rouge
      canonG - codes canoniques de la composante verte
      canonB - codes canoniques de la composante bleue
      Throws:
      Exception - si une erreur survient dans l'écriture
    • writeHeader

      public void writeHeader(BitOutputStream out, int width, int height)
      Écrit l'en-tête du fichier PIF. L'en-tête contient uniquement la largeur et la hauteur, chacune codée sur 16 bits.
      Parameters:
      out - flux de sortie binaire
      width - largeur de l'image
      height - hauteur de l'image
    • writeTables

      public void writeTables(BitOutputStream out, Map<Integer,String> canonR, Map<Integer,String> canonG, Map<Integer,String> canonB)
      Écrit dans le fichier les longueurs des codes canoniques. Pour chaque composante (R, G, B), on parcourt les 256 valeurs possibles. Si un symbole n'existe pas dans les codes, on écrit une longueur 0.
      Parameters:
      out - flux binaire vers le fichier
      canonR - longueurs pour la composante rouge
      canonG - longueurs pour la composante verte
      canonB - longueurs pour la composante bleue
    • encodePixels

      public void encodePixels(BitOutputStream out, RGBImage image, Map<Integer,String> canonRED, Map<Integer,String> canonGREEN, Map<Integer,String> canonBLUE)
      Encode chaque pixel de l'image en utilisant les codes canoniques. Pour chaque pixel, les composants R, G et B sont écrits dans cet ordre en utilisant writeBitString().
      Parameters:
      out - flux d'écriture binaire
      image - l'image source
      canonRED - codes canoniques pour le rouge
      canonGREEN - codes canoniques pour le vert
      canonBLUE - codes canoniques pour le bleu