Tél 01 53 01 98 30 - Fax 01 42 72 78 18 - Snap charlemagne4eme

Introduction

Le but du projet est de créer des images en incrustant des motifs sur un fond dans un certain ordre. Le fond et les motifs seront des images préexistantes venant du même dossier que votre programme. Ces images devront être des fichiers au format jpeg, un format de stockage courant. Celle que l’on créera sera sauvée sous ce format.

La lecture et l’écriture de fichiers au format jpeg seront réalisées par un programme clés en main qui vous est fournit et qui assurera la conversion vers une représentation interne en java sous forme de tableau d’entiers (cf. section suivante). De même, l’affichage d’une image dans une fenêtre sera réalisée par ce programme.

 

1 Représentation des images :

Une image est une matrice de points ou pixels qui sont chacun caractérisé par une couleur. Cette couleur est spécifiée comme un mélange de trois couleurs primaires : le rouge, le vert et le bleu. La quantité de chaque couleur dans le mélange est précisée par un nombre entier compris entre 0 et 255. Par exemple, la couleur (255, 0, 0) correspond à un mélange du maximum de rouge avec pas de vert et pas de bleu : c’est le rouge le plus rouge qui soit. Le blanc est représenté par (255, 255, 255) et le noir par (0, 0, 0). Le jaune est obtenu en mélangeant du rouge et du vert : (255, 255, 0) pour le jaune le plus vif, (200, 200, 0) pour un jaune plus terne.

La représentation d’une image en java se fera dans ce projet au moyen d’un tableau d’entiers à trois

dimensions : la première dimension est la coordonnée horizontale (x) du point, la deuxième dimension est la coordonnée verticale du point (y), la troisième dimension sert pour la couleur. Le rouge sera dans la case 0, le vert dans la case 1 et le bleu dans la case 2. Par exemple, si l’image est contenu dans un tableau déclaré par int[][][] tab;, la case référencée par tab[50][0][1] donnera la quantité de vert du point situé sur la cinquante et unième colonne (indice 50) de la première ligne (indice 0) de l’image.

 

2 Le projet :

 

Le projet sera un programme proposant un menu en mode graphique grâce au module tkinter et le module imageio, d'autres modules si nécessaires ( math, pour les confirmés en python le module numpy, etc...).

Il proposera au minimum une barre des menus et de sous-menus qui permettront les opérations suivantes :

  • ouvrir une image à partir d’un fichier existant.
  • fermer une image.
  • commencer la création d’une nouvelle image en spécifiant le fond.
  • recadrer une image
  • incruster une image ouverte dans une image en cours de création à un emplacement donné.
  • terminer la création d’une image en la sauvant dans un fichier.
  • appliquer une sténographie sur une image ( programme python déjà fait au cours de l'année)
  • afficher la liste des images ouvertes avec leur nom de fichier.
  • quitter le programme.

 

A la création d’une nouvelle image, il faut faire une copie du tableau correspondant à l’image du fond pour pouvoir modifier le contenu de la nouvelle image sans altérer le tableau décrivant l’ancienne image.

Lors de l’incrustation d’une image sur le fond, on considérera que la couleur blanche correspond au fond de l’image à incruster. Les points blancs ne seront pas recopiés. Seuls les points d’une autre couleur seront incrustés dans la nouvelle image.