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 :

[C# 2.0] Problème pour copier une image dans un byte[]


Sujet :

C#

  1. #1
    Membre régulier

    Inscrit en
    Décembre 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 85
    Points : 104
    Points
    104
    Par défaut [C# 2.0] Problème pour copier une image dans un byte[]
    Bonjour,

    Je suis en train de créer une application qui génére des images. Ces images, une fois créées, sont copiées dans un buffer, pour etre ecrite sur un fichier.

    On peu simplifier le code par ce qui suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
                Image imgPNG = Image.FromFile(@"C:\image.png");
                MemoryStream memStream = new MemoryStream();
                imgPNG.Save(memStream, System.Drawing.Imaging.ImageFormat.Png);
                byte[] buffer = new byte[memStream.Length];
                memStream.Read(buffer, 0, buffer.Length);
                memStream.Close();
    Le buffer est toujours vide ! (il ne contient que des 0) Et ce, quelque soit le format de l'image utilisé.

    Ai-je raté quelque chose ?

    PS: Le code écrit ci-dessus n'a aucune utilisé, car on pourrait directement lire le fichier image dans un buffer, mais j'ai mis celui la pour simplifier

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Points : 14 357
    Points
    14 357
    Par défaut
    C'est tout simplement parce que ta position dans le flux du memoryStream est à la fin du flux. Donc même en lui disant "lis de la position 0 à la position taille du buffer", le système commence à lire par rapport à sa position dans le flux, or il est à la fin, donc il ne lit rien.

    Juste avant de faire ton read, il faut donc te positionner tout au début du flux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    memStream.Seek(0, SeekOrigin.Begin);
    Mais il y avait plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    buffer = memStream.GetBuffer();

  3. #3
    Membre régulier

    Inscrit en
    Décembre 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 85
    Points : 104
    Points
    104
    Par défaut
    OK, merci bcp !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/05/2007, 17h43
  2. Problème pour insérer une image
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 26/04/2006, 23h36
  3. Problème pour afficher une image bmp
    Par homeostasie dans le forum MFC
    Réponses: 6
    Dernier message: 08/05/2005, 18h36
  4. [MFC]Problème pour afficher une image.
    Par Deedier dans le forum MFC
    Réponses: 4
    Dernier message: 25/03/2005, 16h13
  5. Réponses: 13
    Dernier message: 23/12/2004, 18h01

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