honrisse | dax003 a écrit :
Bonsoir,
Etant en Terminale, spécialité ISN (Informatique et Sciences du Numérique), on nous demande de réaliser un projet à présenter à la fin de l'année. Notre prof nous as fait (vaguement) étudié le langage Javascool, et nous as imposé notre projet. Le mien étant le traitement d'image, c'est à dire un truc qui m'est totalement inconnu.
Il faut que je prenne une image, et que je propose plusieurs changement : inversion des couleurs(la photo étant en noir et blanc), effet photomaton etc... Avec toujours l'image originale qui reste afficher.
Et je sais absolument pas comment faire ça, je suis perdu à tous les niveaux : autant pour charger l'image depuis mon PC et pour l'inversion des couleurs ça va, mais pour l'effet photomaton et l'affichage de l'image originale ET de l'image modifié en même temps je ne sais pas...
Voilà donc où se situe mon problème, comment garder l'image de base afficher ? Et pour l'effet photomaton si quelqu'un a une idée ?
Merci d'avance, je sais que c'est pas le projet le plus palpitant mais voilà, c'est pour le baccalauréat et ça nous est imposé...
Bonnes soirée.
|
Pour afficher l'image originale et celle modifiée, le mieux je pense est d'utiliser une image résultat qui contient les deux :
Code :
- // http://javascool.gforge.inria.fr/i [...] e.jvs.html
- // Voici quelques routines qui permettent de traiter les images sous forme de tableau
- // Il faut utiliser reset(width, height, false, false) ou load(name, false, false) pour une image non centrée et non zoomée.
- //
- // Retourne l'image courante sous forme de tableau monochrome
- int[][] getImageArray() {
- int width = getWidth(), height = getHeight(), image[][] = new int[width][height];
- for(int y = 0; y < height; y++)
- for(int x = 0; x < width; x++)
- image[x][y] = getPixel(x, y);
-
- return image;
- }
- // Retourne l'image courante sous forme de tableau couleur image[x][y][RR, GG, BB]
- int[][][] getImageColorArray() {
- int width = getWidth(), height = getHeight(), image[][][] = new int[width][height][3];
- for (int y = 0; y < height; y ++) for (int x = 0; x < width; x ++) image[x][y] = getPixelColor(x, y);
- return image;
- }
- // Copie le tableau monochrome dans l'image courante
- void setImageArray(int[][] image) {
- int width = image.length, height = image[0].length;
- reset(width, height, false);
- for (int y = 0; y < height; y ++) for (int x = 0; x < width; x ++) setPixel(x, y, image[x][y]);
- }
- // Copie le tableau couleur image[x][y][RR, GG, BB] dans l'image courante
- void setImageColorArray(int[][][] image) {
- int width = image.length, height = image[0].length;
- reset(width, height, false);
- for (int y = 0; y < height; y ++) for (int x = 0; x < width; x ++) setPixel(x, y, image[x][y][0], image[x][y][1], image[x][y][2]);
- }
- // Redimensionne une image
- int[][] resizeimage(int[][] image0, int width, int height) {
- int width0 = image0.length, height0 = image0[0].length;
- int[][] image = new int[width][height];
- for (int y = 0; y < height; y ++) for (int x = 0; x < width; x ++) {
- // Interpolation du pixel en prenant le plus proche voisin
- int x0 = (x * width0) / width, y0 = (y * height0) / height;
- image[x][y] = image0[x0][y0];
- }
- return image;
- }
- int[][] filtreInverse(int[][] img) {
- int w = img.length, h = img[0].length;
- int[][] imgInverse = new int[w][h];
- for (int i = 0; i < w; i ++) {
- for (int j = 0; j < h; j ++) {
- imgInverse[w-i-1][j] = img[i][j];
- }
- }
- return imgInverse;
- }
- void main() {
- load("http://farm3.static.flickr.com/2472/3988198655_d8b12c2328.jpg", false, false);
-
- int[][] imgOriginale = getImageArray();
- sleep(1000);
-
- int[][] imgSymetrie = filtreInverse(imgOriginale);
- int w = imgSymetrie.length, h = imgSymetrie[0].length;
- int[][] imgOriginaleSymetrie = new int[w*2][h];
-
- for (int i = 0; i < w; i ++) {
- for (int j = 0; j < h; j ++) {
- //Copie imgOriginale dans imgOriginaleSymetrie
- imgOriginaleSymetrie[i][j] = imgOriginale[i][j];
- //Copie imgSymetrieginale dans imgOriginaleSymetrie
- imgOriginaleSymetrie[i+w][j] = imgSymetrie[i][j];
- }
- }
- setImageArray(imgOriginaleSymetrie);
- //save("test.jpg" );
- }
|
Les fonctions au début sont celles de cette page : http://javascool.gforge.inria.fr/i [...] e.jvs.html
On créé ensuite une image résultat de taille (largeur x 2, hauteur) pour contenir les deux images.
Le lien de documentation : http://javascool.gforge.inria.fr/v [...] n-etal.pdf
|