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++/CLI Discussion :

Lev�e Exception sur conversion de tableau de byte en Image


Sujet :

C++/CLI

  1. #1
    Membre habitu�
    Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 13
    Par d�faut Lev�e Exception sur conversion de tableau de byte en Image
    Bonjour,

    Je souhaite afficher une petite partie d'une image compl�te dans une pictureBox. Pour cela, une fois le rectangle de s�lection de la partie � afficher d�fini, je converti l'image principale en tableau de byte (� partir de la m�thode donn�e dans le faq) puis je recopie les pixels qui m�int�ressent dans un autre tableau de byte. Jusque l� aucun probl�me.

    Cependant, lorsque je souhaite convertir le tableau r�sultant en Image, en passant par la m�thode d�crite dans le faq:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    	cli::array <unsigned char> ^ImageRoi = gcnew cli::array <unsigned char> (RoiWidth * RoiHeight);
    		MemoryStream ^ms = gcnew MemoryStream(ImageRoi);
    		Image ^test =  Image::FromStream(ms);
    		ms->Close();
    j'ai une exception de type System Argument Exception dans System.Drawing.dll au niveau de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Image ^test =  Image::FromStream(ms);
    Il me semble que je fourni le bon param�tre au constructeur de MemoryStream, ce flux devrait donc �tre correct pour le constructeur de l'image.

    Quelqu'un aurait-il une id�e de lce qui peut lever cette exception?

  2. #2
    Membre chevronn�

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de D�me (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par d�faut
    Salut,

    Ne peux-tu pas tout simplement utiliser la fonction Bitmap::Clone ( m�thode (Rectangle, PixelFormat) ) pour cr�er un nouveau bitmap qui ne contient que la partie ( ici d�finie par le rectangle ) de l'image � afficher, puis l'envoyer dans ta pictureBox?
    Ca parait plus simple que d'utiliser la structure Image

    Ca dois donner ( � tester ) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    Rectangle r ( p1x, p1y, p2x, p2y );//Avec p1 et p2 les coordonnées de la zone à afficher
    Bitmap^ imageZoom = MonBitmap->Clone ( r, MonBitmap->PixelFormat );
     
    maPictureBox->Image = imageZoom;
    Ca ne fait que contourner le probl�me, mais �a dois marcher... Pour ton exception, je ne vois pas...

  3. #3
    Membre chevronn�

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de D�me (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par d�faut
    Pour ton exception, �a, �a marche bien mieux � mon avis :

    � la ligne 4 :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Image ^test = gcnew Bitmap( ms );
    � la place de
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Image ^test =  Image::FromStream(ms);
    Regarde ici pour l'utilisation correcte du constructeur de Bitmap avec un stream.

  4. #4
    Membre habitu�
    Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 13
    Par d�faut
    Merci,
    j'ai essay� ce que vous m'avez conseill� :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Image ^test = gcnew Bitmap( ms );
    Malheureusement, le MemoryStream que je passe en param�tre n'est pas consid�r� comme un argument valide par le constructeur. Le probl�me est donc quand m�me l�. Pourtant, en v�rifiant les propri�t� de l'objet "ms" dans le debug, je ne vois rien d'anormale.

  5. #5
    Membre chevronn�

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de D�me (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par d�faut
    Donne l'adresse pr�cise du FAQ d�o� tu sors ce code, que je puisse y regarder pour comprendre d�o� vient ce probl�me.

  6. #6
    Membre habitu�
    Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 13

Discussions similaires

  1. Conversion de tableau de byte en types primitifs
    Par soft0613 dans le forum API standards et tierces
    R�ponses: 3
    Dernier message: 14/03/2008, 15h14
  2. [C# 2.0] Conversion hexad�cimale dans un tableau de byte[]
    Par cyllix dans le forum Windows Forms
    R�ponses: 3
    Dernier message: 18/08/2006, 12h29
  3. R�ponses: 1
    Dernier message: 09/07/2006, 23h39
  4. [C#] Convertir un tableau de byte en Image
    Par goulhasch dans le forum ASP.NET
    R�ponses: 4
    Dernier message: 24/01/2005, 10h12

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