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

C++ Discussion :

Afficher une image à partir d'un tableau


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Afficher une image à partir d'un tableau
    Bonjour,

    J'ai créé un programme qui récupère des trames ethernet par liaison wifi.
    Les données contenues dans ces trames sont les pixels d'une image (640*480): une ligne = une trame et un octet = un pixel.
    Je récupère ces données dans un tableau.
    Jusque là aucun problème. A présent, je veux afficher l'image, qui est sous la forme d'un tableau de pixel.

    Je dois aussi vous préciser que je travaille sous Visual C++ 2005, et que je suis libre de choisir la façon d'affiche l'image (PictureBox, ...).
    Je pensais m'orienter vers les bitmap, mais je ne sais pas comment le remplir avec mon tableau ?!

    Si quelqu'un à une idée ou une suggestion, je suis preneur !!

    Merci d'avance pour votre aide.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 37
    Points : 36
    Points
    36
    Par défaut
    Ton programme est écrit avec c++ managé ou pas?
    Si c'est le cas, alors c'est simple,
    créer un nouvel objet
    MemoryStream qui va stocker les données de ton tableau.
    Créer ensuite un objet Bitmap avec le constructeur qui prend le paramètre Stream.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour la réponse.

    Je programme en winform mais comment savoir si c'est c++ managé ou pas ?

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai un problème avec MemoryStream car mon tableau fait 2 dimensions et MemoryStream n'accepte que des tableaux à 1 dimension .

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 37
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par cadavor Voir le message
    Merci pour la réponse.

    Je programme en winform mais comment savoir si c'est c++ managé ou pas ?
    Lorsque tu as créé ton projet? Quel type as tu choisi?
    si c'est CLR => c'est du code managé

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 37
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par cadavor Voir le message
    J'ai un problème avec MemoryStream car mon tableau fait 2 dimensions et MemoryStream n'accepte que des tableaux à 1 dimension .
    Je viens de regarder de plus près la classe Bitmap, si on veut pas utiliser MemoryStream, on pourra appeller la méthode statique :
    Bitmap .FromHbitmap (IntPtr)
    pour créer à partir d'un objet HBITMAP

    obtenu préalablement avec la méthode (GDI)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    HBITMAP CreateBitmap(
      int nWidth,         // bitmap width, in pixels
      int nHeight,        // bitmap height, in pixels
      UINT cPlanes,       // number of color planes
      UINT cBitsPerPel,   // number of bits to identify color
      CONST VOID *lpvBits // color data array
    );
    où CONST VOID *lpvBits représente les donnés de ton bitmap,
    mais là aussi, c'est un tableau à 1 dimension.

    Je pense qu'il faut qu'avant tout tu convertisses ton tableau à 2 dimensions en 1 tableau à 1 dimension.

    ci-dessous un lien pour créer un HBITMAP si jamais t'utilises MFC:
    http://www.developpez.net/forums/arc.../t-180210.html

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    J'ai réussi à afficher mon image, avec un Bitmap et SetPixel.
    Le problème est que le programme est trop lent !!
    Je suis donc à la recherche d'une nouvelle méthode d'affichage.

    J'ai transformé mon tableau pour n'avoir qu'une seule dimension.
    J'ai essayé avec MemoryStream mais j'ai un problème avec Bitmap(Stream) :

    System..::.ArgumentException -> stream contient un fichier image PNG avec une seule dimension supérieure à 65 535 pixels.

    Mon tableau de pixel fait 640*480 pixels (donc trop !!)

    Je me suis donc redirigé vers la classe Image::FromStream(Stream) mais j'ai encore un problème, visiblement avec le paramètre que je lui envoi :

    Stream^ str = gcnew MemoryStream(image);
    pictureBox1->Image = Image::FromStream(str);


    avec image, mon tableau de pixels (640*480)

    Tout compile mais lors de l'exécution, ça plante (problème d'argument non valide pour FromStream). J'ai beau chercher, je ne trouve pas de solution à cette erreur.

    Pouvez-vous m'aider à nouveau ?!

    Merci d'avance

Discussions similaires

  1. Afficher une image à partir d'un tableau de pixels
    Par hajerboug dans le forum NetBeans
    Réponses: 0
    Dernier message: 02/04/2012, 21h51
  2. [MySQL] Afficher une image à partir stockée en base de données
    Par arti2004 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 21/06/2011, 19h40
  3. Afficher une image à partir d'un tableau de byte
    Par Fr3nchK1ss dans le forum JavaFX
    Réponses: 15
    Dernier message: 02/11/2009, 01h37
  4. Afficher une image à partir d'un tableau de char
    Par Beavis dans le forum Débuter
    Réponses: 7
    Dernier message: 12/02/2008, 16h01
  5. afficher une image à partir d'une base de données access
    Par zidenne dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/11/2005, 11h41

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