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

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    avril 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : avril 2016
    Messages : 48
    Points : 41
    Points
    41

    Par défaut Créer une image depuis un tableau de byte javafx

    Bonjour tout le monde,

    J'aurais voulu passer d'un tableau de pixel à une image correspondante.
    Quelqu'un peut bien m'aider ?

    J'ai trouver ce code mais que je comprends pas bcp et si vous pensez qu'il marche, quelqu'un peut m'aider à le comprendre?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private BufferedImage createBufferedImage ( octet [] pixels, largeur int, hauteur int ) { 
      SampleModel sm = getIndexSampleModel (largeur, hauteur); 
      DataBuffer db = new DataBufferByte (pixels, largeur * hauteur, 0 ); 
      WritableRaster raster = Raster .  createWritableRaster (sm, db, null ); 
      IndexColorModel cm = getDefaultColorModel (); 
      BufferedImage image = new BufferedImage (cm, raster, false , null ); 
      retourne java .  awt .  image; 
     }
    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    août 2005
    Messages
    6 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2005
    Messages : 6 047
    Points : 21 701
    Points
    21 701
    Billets dans le blog
    39

    Par défaut

    En fait ce code n'utilise pas JavaFX mais permet de créer une image via Java2D/AWT en utilisant une des APIs de bas niveau (il y a plusieurs moyens de faire la même chose et ce n'est pas forcément la méthode la plus simple).

    Pour ce que j'en comprends (ça fait des plombes que j'ai pas touché l'API AWT de bas niveau) :

    • On crée un SampleModel qui va dire comment les pixels sont stockés (probablement sous forme d'entier ou d'octet). Le modèle est indexé donc c'est probablement une image en 256 couleurs qui sont stockées dans une palette. Chaque pixel de l'image contient alors non pas la couleur mais l'indice de la couleur dans la palette.
    • On crée un DataBuffer qui va être la matrice ou le tableau (on peut simuler une matrice 2D avec un tableau 1D). Idem on utilise un octet qui est l'indice de la couleur du pixel dans la palette.
    • On crée un Raster qui est la classe dans la quelle le Graphics (qui est utilisé par l'API de haut niveau) fait son rendu.
    • Je ne sais pas pourquoi il prend un autre ColorModel alors qu'il en a déjà un.
    • On crée une BufferedImage Java2D/AWT/Swing.
    • La toute dernière ligne est fausse et devrait être return image;


    On pourra dessiner dans cette image via son Graphics ou en tapant directement dans son Raster. Après si on veut on peut créer une Image FX via la méthode javafx.embed.swing.SwingFXUtils.toFXImage().

    Sinon tu peux essayer de voir si cette ligne de code donne un résultat ou pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image img = new Image(new ByteArrayInputStream(buffer));
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    avril 2016
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : avril 2016
    Messages : 48
    Points : 41
    Points
    41

    Par défaut

    Merci Bouye pour ces details, et pour cete ligne d'en bas, qui est plus simple et ça m'a servi.

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

Discussions similaires

  1. Créer une image à partir d'un tableau de bytes
    Par rockley dans le forum Général Java
    Réponses: 5
    Dernier message: 21/12/2011, 14h59
  2. Servlet devant charger une image dans un tableau de byte
    Par mumu27 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 19/01/2010, 12h30
  3. convertir une image en un tableau de byte
    Par isoman dans le forum Graphisme
    Réponses: 7
    Dernier message: 30/03/2009, 11h17
  4. Créer une image depuis rien.
    Par Arthur Rainbow dans le forum 2D
    Réponses: 4
    Dernier message: 04/08/2008, 00h24
  5. Réponses: 9
    Dernier message: 19/03/2007, 11h46

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