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

ASP.NET Discussion :

Convertir une image en byte array!


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Points : 48
    Points
    48
    Par défaut Convertir une image en byte array!
    Bonjour : ),

    Je voudrais un peut d'aide au niveau d'une fonction que j'ai crée, permettant de convertir des images, situé dans un dossier, en byte array, ceci dans le but de le transmettre à une application flex, le reconvertissant en image. (en effet les types d'images flex et c# sont différentes).

    Voici ma fonction, dont je ne sais où est l'erreur, en faites je récupére le chemin de l'image et non son contenu...

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    using System;
    using System.IO;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections;
    using System.Drawing;
    using System.Windows.Forms;
     
    /// <summary>
    /// Description résumée de Class1
    /// </summary>
    /// 
     
    namespace External
    {
        public class BiblioPlan
        {
            private ArrayList listeBiblio;
            private byte[] MesBytes;
            private Image img;
            private ArrayList listeImage;
            private String path;
     
            //this function will have a parameter who will be the path of the application
            public ArrayList getBiblio()
            {
                listeBiblio = new ArrayList();
                listeImage = new ArrayList();
                path = "";
                Console.Write(System.IO.Path.GetDirectoryName(Application.ExecutablePath));
     
                String[] fichiers = Directory.GetFiles("C:/blabla/Flex3/src/assets/image");
                for (int i = 0 ; i < fichiers.Length ; i++)
                {
                    // écrire en console les noms des fichiers
                     Console.Out.WriteLine(fichiers[i]);
     
                    // read un fichier et le transformer en byte
                     System.IO.FileInfo MonFichier = new System.IO.FileInfo(fichiers[0]);
                     System.IO.FileStream MonFileStream = MonFichier.OpenRead();
                     listeBiblio.Add(MonFileStream.Name);
                     byte[] TableauDeBytes = new byte[MonFileStream.Length];
                     MonFileStream.Read(TableauDeBytes, 0, (int)MonFileStream.Length);
                     MonFileStream.Close();
                     MesBytes = TableauDeBytes;
                    // créer l'image associée au buffer
                     if (TableauDeBytes.Length > 0)
                     {
                         img = StreamToImage(TableauDeBytes);
     
                         // créer liste image
                         listeBiblio.Add(fichiers[i]);
                         listeImage.Add(img);
                         MesBytes.Initialize();
                     }
                }
                return listeImage;
            }
     
            public static Image StreamToImage(byte[] buff)
            {
                // créer image associée au buffer
                MemoryStream memStream = new MemoryStream();
                Stream ms = new MemoryStream(buff);
                Image img = Image.FromStream(ms);
                return img;
            }
     
     
        }// end of class
    }// end of package
    merci de vote aide

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 32
    Points : 42
    Points
    42
    Par défaut
    La balise [CODE] c'est bien pour afficher des long bouts de code, ca aide a trouver les erreurs! Sinon y'a une chose qui me parait bizare c'est le System.IO.FileInfo MonFichier = new System.IO.FileInfo(fichiers[0]); ou je verrai bien un i à la place du 0. Sinon je n'ai pas trop compris pourquoi tu créais le tableau de buffer et que tu le re-transformait en image mais sans doute a tu tes raisons. Pour la transformation en byte[] j'utiliserai plutôt le code suivant, qui est l'équivalent inversé de ta fonction StreamToImage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Bitmap b = new Bitmap("file.jpg");
    MemoryStream ms = new MemoryStream();
    b.Save(ms, ImageFormat.Jpeg);
    ms.ToArray();
    Bonne chance pour traquer ton(tes) bug(s)!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 85
    Points : 48
    Points
    48
    Par défaut
    Oui , voila, c'était tout à fait ça, j'avais mis l'indice "0" au début pour faire mes tests et ensuite j'ai oublié de remettre "i" donc, du coup ça marche... hum

    La communication entre flex et c# pose quelque problème de typage, un objet image coté c# n'est pas le même coté flex, il faut donc convertir en byte array

    Aprés en effet je le transformer en Image (encore pour tester, mais c'est supprimer maintenant), l'objectif est de lire des images dans un dossier et de les transférer à une application flex, voila, avec ce "i" magique ça marche (après avoir gérer le flex bien sur ^^)

    Merci à toi

    J'aurais peut être un autre souci justement, c'est l'étape inverse !!!

    j'envoie depuis le flex un tableau de byte et veut le convertir en image c#, mais une erreur ce produit au niveau de ma fonction

    dont voici le code

    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
     
    public static int setImage(byte[] img, int IdGroup)
            {
                DBGroup grp = GetGroup(IdGroup);
     
                MemoryStream ms = new MemoryStream(img);
                Image returnImage = Image.FromStream(ms);
     
               // Image image = StreamToImage(img);
                if (returnImage != null)
                {
                    grp.picture = returnImage;
                }
                return grp.picture.Size.Height;
            }
    img est mon tableau fournit par flex

    L'erreur est la suivante

    Function call Error : [FaultEvent fault=[RPC Fault faultString="Le paramètre n'est pas valide." faultCode="Server.Processing" faultDetail="
    à System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)

    à System.Drawing.Image.FromStream(Stream stream)
    le paramétre "ms" ne semble plaire! alors qu'il demande bien un Stream.
    "même avec un Stream ms = new MemoryStream(img), j'ai la même erreur"

    En tout cas merci.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/02/2014, 16h25
  2. Transformer une image to byte array
    Par mimomimo dans le forum Débuter
    Réponses: 14
    Dernier message: 15/03/2011, 11h20
  3. convertir une image en un tableau de byte
    Par isoman dans le forum Graphisme
    Réponses: 7
    Dernier message: 30/03/2009, 10h17
  4. Convertir une Image en byte[]
    Par 84mickael dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 29/05/2008, 11h48

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