This commit is contained in:
Diallo-VM-fbleau
2026-01-05 16:25:53 +01:00
parent 741a2d0fbd
commit 485c45dabc
3 changed files with 25 additions and 11 deletions
+1 -1
View File
@@ -183,7 +183,7 @@ $(BIN)/$(PKG_PATH)/ViewerControleur.class: $(BIN) \
# Exécution # Exécution
run-conv: all run-conv: $(BIN)/$(PKG_PATH)/Convertisseur.class
$(JAVA) -cp $(BIN) $(MAIN_CONVERTER) $(ARGS) $(JAVA) -cp $(BIN) $(MAIN_CONVERTER) $(ARGS)
run-view: $(BIN)/$(PKG_PATH)/Viewer.class run-view: $(BIN)/$(PKG_PATH)/Viewer.class
+22 -8
View File
@@ -11,7 +11,13 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/**
* Cette classe permet de lire un fichier .pif et de reconstruire l'image d'origine.
* Elle lit d'abord l'en-tête puis les longueurs des codes canoniques.
* Ensuite elle reconstruit les codes, construit les arbres de décodage
* et décode les pixels un par un pour obtenir l'image RGB finale.
* Elle est utilisée par le programme Viewer pour afficher une image .pif.
*/
public class PIFReader { public class PIFReader {
private int width; private int width;
@@ -21,11 +27,15 @@ public class PIFReader {
private int[] lenB; private int[] lenB;
/** /**
* Lit et décode un fichier PIF. * Cette methode sert de point d'entrer pour le decodage d'un pif.
* Elle Lit complètement un fichier .pif et renvoie l'image décodée.
* Elle lit l'en-tête, récupère les longueurs des codes,
* reconstruit les codes canoniques puis les arbres nécessaires
* au décodage. Enfin elle lit pixel par pixel.
* *
* @param filepath chemin du fichier PIF * @param file fichier .pif à décoder
* @return l'image RGB décodée * @return l'image obtenue après décodage
* @throws Exception si erreur de lecture * @throws Exception si le fichier est invalide ou si une erreur survient pendant la lecture
*/ */
public RGBImage decodePifFile(File file) throws Exception { public RGBImage decodePifFile(File file) throws Exception {
FileInputStream fis = new FileInputStream(file); FileInputStream fis = new FileInputStream(file);
@@ -55,9 +65,13 @@ public class PIFReader {
} }
/** /**
* Lit l'en-tête du fichier PIF (largeur et hauteur sur 16 bits chacune). * Lit l'en-tête du fichier .pif. On y récupère la largeur
* @throws IOException si erreur de lecture * et la hauteur de l'image, chacune codée sur 16 bits.
*
* @param in flux binaire à lire
* @throws IOException si la lecture échoue
*/ */
public void readHeader(BitInputStream in) throws IOException { public void readHeader(BitInputStream in) throws IOException {
this.width = in.readBits(16); this.width = in.readBits(16);
@@ -71,7 +85,7 @@ public class PIFReader {
* rouge, vert et bleu. Chaque table contient 256 valeurs sur 5 bits. * rouge, vert et bleu. Chaque table contient 256 valeurs sur 5 bits.
* Ces longueurs permettront de reconstruire les vrais codes plus tard * Ces longueurs permettront de reconstruire les vrais codes plus tard
* *
* @param in flux binaire d'entrée * @param in flux binaire d'entrée pdfpdof
* @throws IOException si erreur de lecture se produit * @throws IOException si erreur de lecture se produit
*/ */
public void readCanonicalTables(BitInputStream in) throws IOException { public void readCanonicalTables(BitInputStream in) throws IOException {
Binary file not shown.