IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Créer une image à partir d'un tableau de bytes


Sujet :

Collection et Stream Java

  1. #1
    Membre averti Avatar de rockley
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 404
    Points : 346
    Points
    346
    Par défaut Créer une image à partir d'un tableau de bytes
    Bonjour tout le monde,

    Je voudrais savoir quelle méthode employer (s'il en existe) pour réécrir une image que j'ai stocké dans un trablau à deux dimension. Ce doit être tout con mais je trouve pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
            java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
            Image image = toolkit.getImage("/Bureau/images.jpeg");
            image = new ImageIcon(image).getImage();
            BufferedImage bufferedImage = new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB );
            //Lecture de tous les pixels
            int w = bufferedImage.getWidth();
            int h = bufferedImage.getHeight();
            int[] rgbs = new int[w*h];
     
            int[][]tablo=new int[w*h][4];
              for(int x=0;x<h;x++){
                for(int y=0;y<w;y++){
                  int rgb = bufferedImage.getRGB(y,x);
                  int alpha = ((rgb >>24 ) & 0xFF);tablo[x*w+y][0]=alpha;
                  int rouge = ((rgb >>16 ) & 0xFF);tablo[x*w+y][1]=rouge;
                  int vert = ((rgb >>8 ) & 0xFF);tablo[x*w+y][2]=vert;
                  int bleu = (rgb & 0xFF);tablo[x*w+y][3]=bleu;
                }
              }

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Comme pour la lecture, mais avec un set.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BufferedImage newImage = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
    // Tout plien de setRGB() en regardant la javadoc
    // Cf ma signature
    Pour enregistrer l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    			try {
    				FileOutputStream myFile = new FileOutputStream(path+"//"+ filename);
    				ImageIO.write(newImage ,"png", myFile);
    				myFile.flush();
    				myFile.close();
     
    			} catch (Exception e1) {
    				e1.printStackTrace();
    			}
    Cordialement,
    Patrick Kolodziejczyk.

  3. #3
    Membre averti Avatar de rockley
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 404
    Points : 346
    Points
    346
    Par défaut
    Tout d'abord merci pour ton aide kolodz.

    En fait je sais enregistrer une image ou un fichier quelconque, mais ce que je ne sais pas faire c'est caster mon "tablo" (int [] []) en image.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            int[][]tablo=new int[w*h][4];
              for(int x=0;x<h;x++){
                for(int y=0;y<w;y++){
                  int rgb = bufferedImage.getRGB(y,x);
                  int alpha = ((rgb >>24 ) & 0xFF);tablo[x*w+y][0]=alpha;
                  int rouge = ((rgb >>16 ) & 0xFF);tablo[x*w+y][1]=rouge;
                  int vert = ((rgb >>8 ) & 0xFF);tablo[x*w+y][2]=vert;
                  int bleu = (rgb & 0xFF);tablo[x*w+y][3]=bleu;
                }
              }

  4. #4
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par rockley Voir le message
    En fait je sais enregistrer une image ou un fichier quelconque, mais ce que je ne sais pas faire c'est caster mon "tablo" (int [] []) en image.
    Pourquoi ne pas utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int rgb = (alpha << 24) & 0xFF000000;
    rgb |= (rouge<< 16) & 0x00FF0000;
    rgb |= (vert<< 8) & 0x0000FF00;
    rgb |= (bleu) & 0x00000FF;
    bufferedImage.setRgb(x, y, rgb);

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 318
    Points
    8 318
    Billets dans le blog
    52
    Par défaut
    Je vais voir si je la retrouve, mais il existe une classe qui dispose des fonctions
    get/set pour red/blue/green/alpha.
    Il serai plus logique de l'utiliser.

  6. #6
    Membre averti Avatar de rockley
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 404
    Points : 346
    Points
    346
    Par défaut
    Oui tu as amplement raison. Je pense qu'hier je devais être fatigué pour ne par l'avoir pensé, mais en faite, maintenant je me demande juste si c'est possible.

    J'y ai pensé juste après avoir lu ton premier message.

    Merci de ton aide.


    (Et si quelqu'un sait comment faire le castage d'un int [][] en image je suis preneur également).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer une image à partir d'un tableau EXCEL
    Par ARobel20 dans le forum Développement Windows
    Réponses: 0
    Dernier message: 04/04/2014, 17h30
  2. Afficher une image à partir d'un tableau de byte
    Par Fr3nchK1ss dans le forum JavaFX
    Réponses: 15
    Dernier message: 02/11/2009, 01h37
  3. créer une image à partir d'un tableau de pixels
    Par pfo69 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/12/2007, 06h46
  4. Créer une image à partir d'un fenêtre
    Par dword2add dans le forum Windows
    Réponses: 6
    Dernier message: 19/09/2006, 12h46
  5. Créer une image à partir d'une URL ?
    Par DrySs dans le forum Langage
    Réponses: 1
    Dernier message: 26/01/2006, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo