Stagiaire DG 2 835b0aecd8 first commit
2026-04-09 15:08:32 +02:00
2026-04-09 15:08:32 +02:00
2026-04-09 15:08:32 +02:00
2026-04-09 15:08:32 +02:00
2026-04-09 15:08:32 +02:00
2026-04-09 15:08:32 +02:00
2026-04-09 15:08:32 +02:00

PIF — Primitive Image Format 📁

Bienvenue sur notre projet "PIF", ce projet a été réalisé dans le cadre de la SAÉ 3.2 du département Informatique à lIUT de Fontainebleau et a pour objectif de créer un support logiciel pour un nouveau format dimage, appelé PIF (Primitive Image Format), inspiré du format JFIF (JPEG File Interchange Format)

Table des matières


Présentation 🧩

Le format PIF est un format dimage compressé sans perte, basé sur lalgorithme de Huffman. Son objectif est de mettre en œuvre les principes de la compression et du décodage des données, plutôt que de concurrencer les formats dimages existants déjà optimisés (comme PNG ou JPEG).

Ce projet consiste à développer deux programmes en Java :

Visualisateur PIF

  • Ouvre et affiche une image contenue dans un fichier .pif

  • Le chemin du fichier peut être fourni en argument ou choisi via un JFileChooser

  • Fenêtre redimensionnable et image navigable à la souris

Convertisseur vers PIF

  • Charge une image dans un format supporté par ImageIO.

  • Affiche des informations détaillées (image, tables de fréquences, codes Huffman et codes canoniques)

  • Permet dexporter limage au format .pif


Ce projet a été développé en Java en respectant les consignes de lIUT, avec une organisation claire du code (séparation des rôles) afin de faciliter la compréhension, la maintenance et l’évolution du programme.


Organisation du projet

Lorganisation du projet suit une structure claire permettant de séparer le code source, les composants externes et les fichiers de configuration. Voici l'aborescence :

SAE32_2025/
├── Documentations/
│   ├── diagramme_uml/
│      ├── diagramme_classes
│      └── diagramme_objets
│   └── Rapports.pdf
├── res/ #Image que l'ont veut convertir en PIF (dans ce cas on met celle du projet)
│       ├── rotsnake.pif
│       └── rotsnake.png
├── src/ # Code source du projet
│ └── fr/iutbleau/pif/ # Package principal contenant toutes les classes Java
│       ├── CodageRGb.java
│       ├── ControleurAfficheurImage.java
│       ├── ControleurVisualisateur.java
│       ├── EcrivainPIF.java
│       ├── EntreeCanonique.java
│       ├── EntreeLongueur.java
│       ├── FenetreConvertisseur.java
│       ├── FenetreVisualisateur.java
│       ├── FormateurTexte.java
│       ├── GestionSortiePIF.java
│       ├── Huffman.java
│       ├── LecteurPIF.java
│       ├── MainConvertisseur.java
│       ├── MainVisualisateur.java
│       ├── Noeud.java
│       ├── NoeudDecodage.java
│       ├── NoeudFeuille.java
│       ├── NoeudInterne.java
│       ├── OutilsImageSwing.java
│       ├── PIFImage.java
│       ├── SelecteurFichier.java
│       └── TableCodesCanoniques.java
├── .gitignore # Permet dignorer les fichiers .class générés lors de la compilation
├── Makefile # Automatisation pour la compilation et lexécution
└── README.md # Fichier actuelle


Compilation et lancement

Pour avoir accès au projet faire les commandes suivantes:

# Cloner le dépôt
git clone https://grond.iut-fbleau.fr/sehl/SAE32_2025/
cd SAE32_2025

Compilation et création des JAR :

make
#  ou
make all

Compile toutes les classes Java

Crée les archives :

  • dist/convertisseur.jar
  • dist/visualisateur.jar

Lancer le convertisseur PIF :

make run_convertisseur

Ouvre une fenêtre pour choisir limage à convertir -> Le fichier .pif est créé automatiquement

Avec arguments :

  • make run_convertisseur image.png
  • make run_convertisseur image.png sortie.pif

Si un seul argument est fourni :

  • limage est utilisée comme entrée
  • la sortie est générée automatiquement dans res/sortie/

Si deux arguments sont fournis :

  • premier : image dentrée
  • second : fichier de sortie (.pif forcé automatiquement)

Lancer le visualisateur PIF :

make run_visualisateur

Ouvre une fenêtre pour choisir un fichier .pif

Avec argument :

make run_visualisateur image.pif

Création de la documentation

La documentation du code source est générée via Javadoc. Utilisez :

make javadoc

Nettoyage des fichiers temporaires

Pour supprimer les fichiers intermédiaires on fait :

make clean

Supprime les dossiers : - build/ - dist/

Pour supprimer la documentation JavaDoc (dossier javadoc/) :

make cleanjavadoc

Rapport d'avancement

Le rapport du projet est disponible dans le dossier Documentations. Accédez-y directement ici : Documentations/Pif-Rapport.pdf.


Crédits

Ce projet a été réalisé par :

Professeur : Luc Hernandez.

S
Description
No description provided
Readme 5.2 MiB
Languages
Java 92.8%
Makefile 7.2%