Files
2026-01-11 14:45:24 +01:00

3.1 KiB
Raw Permalink Blame History

Projet : Primitive Image Format (PIF)

Description générale

Ce projet consiste à implémenter un nouveau format dimage compressé sans perte, appelé PIF (Primitive Image Format), inspiré du format JFIF.
Il s'appuie sur la création de tables de fréquences, de codes de Huffman, de codes canoniques et sur la manipulation binaire afin de réduire la taille des images.

Deux programmes Java doivent être développés :

  1. Visualisateur PIF
    Programme capable douvrir un fichier .pif et dafficher limage dans une interface graphique.

  2. Convertisseur vers PIF
    Programme permettant de charger une image classique (ImageIO), de générer ses tables de fréquences et codes associés, puis de produire un fichier .pif.

Ce travail doit être réalisé en binôme ou trinôme.


Deadline

Date limite de rendu : dimanche 11 janvier 2025 à 23h59.


Fonctionnalités attendues

1. Visualisateur .pif

  • Lecture du fichier .pif via argument de ligne de commande ou JFileChooser.
  • Décodage :
    • de len-tête (largeur, hauteur),
    • des trois tables canoniques (R, G, B),
    • des données binaires des pixels.
  • Affichage graphique sous Swing :
    • fenêtre redimensionnable,
    • image centrée si petite,
    • image déplaçable à la souris si trop grande.

2. Convertisseur vers format .pif

  • Chargement d'une image via ImageIO.read().
  • Extraction :
    • des tables de fréquences,
    • des codes Huffman initiaux,
    • des codes canoniques triés.
  • Affichage des tables pour inspection.
  • Génération du fichier .pif :
    • en-tête,
    • tables canoniques compactes,
    • données binaires des pixels encodés.
  • Le deuxième argument de ligne de commande peut définir le nom du fichier .pif.

Structure du format PIF

Un fichier .pif contient trois sections :

  1. En-tête (4 octets)

    • largeur (2 octets)
    • hauteur (2 octets)
  2. Tables canoniques (768 octets)
    Trois tables successives de 256 octets : rouge, vert, bleu.
    Chaque octet indique la longueur du code canonique dune valeur entre 0 et 255.

  3. Section pixels (à partir du 773e octet)
    Les trois composantes (R, G, B) sont encodées via leurs codes canoniques respectifs.
    Les bits sont packés de manière contiguë.

Rapport à produire

Un rapport PDF doit contenir :

  • noms des membres du groupe,
  • introduction résumant le sujet,
  • description des fonctionnalités du programme,
  • captures d’écran,
  • diagrammes UML simplifiés,
  • explication du compresseur (Huffman, canoniques, structure du fichier),
  • explication du décompresseur,
  • conclusion personnelle de chaque membre.

Le rapport ne doit pas contenir de code source.


Compilation et exécution

Visualisateur

java -jar pif-viewer.jar chemin/image.pif

Convertisseur

java -jar pif-converter.jar image.png sortie.pif

Si aucun argument nest fourni, un JFileChooser est ouvert.


  • Les commits, leur fréquence et la collaboration seront pris en compte dans la note.

Auteurs

  • Algassimou Pellel DIALLO
  • Ayoub ANHDIRE
  • Youness BOULALAME

Enseignant

  • Luc HERNANDEZ