\documentclass[1&pt]{article}
\usepackage{graphicx}
\usepackage{array}    
\usepackage[table]{xcolor}
\usepackage{colortbl}
\usepackage{geometry}
\usepackage[colorlinks=true, linkcolor=black, urlcolor=black, citecolor=black]{hyperref}
\usepackage{float}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}         
\usepackage{comment}
\graphicspath{{images/}}

\title{\textbf{RAPPORT SAE32\_2025  \\BUT Informatique - 2ème année \\SAE3.2-Application "Primitive Image Format"}}
\author{\textbf{Youness BOULALAM  Algassimou DIALLO  Ayoub ANHDIRE}}
\date{\textbf{07 janvier 2026}}

\begin{document}
\maketitle
Développement d'une application de conversion d'une image au format PIF (1ère image) + Affichage dans une fenetre d'une image contenue dans un fichier PIF (2ème image).

\begin{figure}[H]
  \centering
  \includegraphics[width=0.8\textwidth]{ConvertisseurFR}
  \caption{Interface principale du convertisseur , notamment avec les tables de fréquences}
\end{figure}


\begin{figure}[H]
  \centering
  \includegraphics[width=0.45\textwidth]{Vis}
  \caption{Interface principale du visualisateur ou l'utilisateur peut déplacer l'image avec la souris lorsqu'elle est trop grande}
\end{figure}


\section*{\underline{Comptes GIT utilisés pour ce projet}}

  \begin{itemize}
  \item \textbf{Youness BOULALAM} (Groupe 4) : \texttt{youness}
  \item \textbf{Algassimou DIALLO} (Groupe 4) : \texttt{Diallo VM fbleau}
  \item \textbf{Ayoub ANHDIRE} (Groupe 4) : \texttt{Ayoub ANHDIRE Anhdire Ayoub ANHDIRE}
  \end{itemize}
\begin{center} 
\textbf{Réalisé en JAVA} : Architecture MVC \\
\textbf{Dépôt Gitea : }\url{https://grond.iut-fbleau.fr/dialloa/SAE32_2025}
\textbf{Professeur :} M.Luc Hernandez \\ 
\textbf{Date de rendu : }11 janvier 2026 \\
\end{center}
\renewcommand{\contentsname}{Sommaire}  
\tableofcontents
\section{Introduction}
Pour cette deuxieme SAE du semestre 3 , il nous a fallu réaliser \textbf{deux} programmes : un convertisseur d'une image au format png ou du moins supportable par la méthode \textit{read} de la classe \textbf{ImageIO}. L'image sera donnée en argument ou sinon elle sera sélectionner  par un \textbf{JFileChooser}(à part s'il y a un deuxième argument et qu'il represente un chemin et un nom acceptable). Pour ce programme , on aura une interface simple avec la tables des fréquences , la tables des codes initiaux (Huffman) et la table des codes canoniques. A la suite de cela , l'utilisateur a la possibilité ou non de pouvoir sauvegarder son image au format PIF. 

 Le deuxieme programme est un visualisateur ou celui-ci est censé afficher dans une fenetre une image contenue dans un fichier au format PIF. Celui-ci est donnée en argument ou la sélection du fichier sera réalise à l'aide d' un \textbf{JFileChooser}. La taille de la fenetre sera la taille de l'image à afficher avec une taille qui ne dépasse pas l'écran : si l'image est plus petite que le fenetre , elle sera centré et si elle ets plus grande que la fenetre : elle sera partiellement visible et pourra etre déplacé à la souris en maintenant le bouton gauche enfoncé. 

Ce projet a été réalisé en trinôme, et nous avons développé l’application entièrementen Java, en respectant les bonnes pratiques vues en cours : architecture MVC, créationde makefile, et une interface graphique codée sans bibliothèque externe. Un soin particulier a été apporté à l’ergonomie : l’interface est pensée pour être simple, claire, et agréable à utiliser. 


\section{Répartition des taches}



\begin{center}
\begin{tabular}{|l|l|p{9cm}|} 
\hline
\textbf{Nom} & \textbf{Tâches effectuées} \\
\hline
Algassimou DIALLO & 
\begin{minipage}[t]{8.5cm}
\begin{itemize}
    \item Creation de la structure generale du projet (Dossier, UML)
    \item Implémentation de BitOutputStream
    \item Implémentation de BitInputStraam
    \item Implémentation complète du contrôleur (ConverterController)
    \item Génération et affichage des fréquences
    \item J'ai aussi travailler sur le constructeur de HuffmanTree et Huffman node
    \item Intégration de l’interface graphique (ConverterWindow)
    \item Gestion du bouton Export et sauvegarde .pif dans un thread séparé
    \item Creation et Test du MakeFile
    \item Implémentation du PIFWriter (écriture des tables, pixels)
    \item Implémentation du PIFReader (lecture, reconstruction, décodage)
    \item Implémentation du contrôleur pour la vue 
    
\end{itemize}
\end{minipage} \\
\hline

Youness BOULALAM & 
\begin{minipage}[t]{8.5cm}
\begin{itemize}
    \item Gestion des erreurs et messages utilisateur
    \item Conversion RGBImage BufferedImage pour le Viewer
    \item Conversion RGBImage BufferedImage pour le convertisseur
    \item tache 1
\end{itemize}
\end{minipage} \\
\hline

Ayoub ANHDIRE & 
\begin{minipage}[t]{8.5cm}
\begin{itemize}
    \item Javadoc (Équipe)
    \item Génération des codes Huffman
    \item Génération des codes canoniques
    \item Interface d'affichage des fréquences
    \item Test de BitOutputStream
    \item Lecture de l'en-tête
    \item Diagramme de classe
\end{itemize}
\end{minipage} \\
\hline

\end{tabular}
\end{center}



\section{Fontionnalités principales}
\subsection{Conversion au format PIF}
% appuyer cette section avec des diagrammes et des explications de votre code + diagramme objet (pour l'abre binaire}
\section{Fonctionnalités principales}
  \subsection{Conversion au format PIF}
  La conversion d’une image vers le format PIF repose sur plusieurs étapes :
  analyse des composantes RGB, calcul des fréquences, construction de l’arbre
  de Huffman, création des codes canoniques, puis écriture finale dans un fichier
  binaire structuré. Cette section présente les mécanismes mis en place et la
  contribution de chaque membre du groupe.
  \subsection{contribution de Algassimou Pellel Diallo}
  pipeline global, le role du controleur,
  la navigation entre les etapes, les ecrans
  le workflow user i.e comment le user convetit un fichier 
  ajout de diagramme

  \subsection{contribution de Ayoub Anhdire}
  TU dois parler du concept dabre binaire, comment Huffman contruit un arbre optimal
  La logique des codes canoniques, un diagramme dobjet de larbre ou un dessin claire
  pourquoi cette structure est pratiques à encoder


  et fais une section resumer vers la fin 
  





% donner une explication de la forme des tables des codes dans le convertisseur, et du mécanisme qui exploite cette forme pour assurer l'encodage
\subsection{Visualisateur au format PIF}
% appuyer cette section avec des diagrammes et des explications de votre code 
% donner une explication de la forme de la table des codes dans le visualisateur, et du mécanisme qui exploite cette forme pour assurer le décodage
\section{MakeFile du Projet}
% expliquer le makefile
\section{Conclusion}
Nous avons pensé que ce projet ... (à compléter)
% conclusion de groupe + conclusion Personnelle : 
\subsection{Youness BOULALAM}
\subsection{Algassimou DIALLO}
\subsection{Ayoub ANHDIRE}
\end{document}


% centering ==> pour center le texte pour une seule ligne ==> terminer par \par pour faire comprendre au compilateur que c'est la fin de la ligne à centrer !
