\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 d'Algassimou Pellel Diallo} % 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 !