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 :

convertir bitmapimage en byte


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Par défaut convertir bitmapimage en byte
    Bonjour,
    Je cherche à placer une image (100x100) dans un fichier xml donc au format byte[]. La sauvegarde semble bien se passer mais pas la récupérations. Ces codes viennent de internet ce n'est pas moi qui les ai développé.

    code pour mettre dans le xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public byte[] bitmapImageToBytes(BitmapImage image)
            {
                if (image == null) { return null; }
     
                var encoder = new JpegBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(image));
     
                using (var ms = new MemoryStream())
                {
                    encoder.Save(ms);
                    return ms.ToArray();
                }
            }
    Voici mon XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <image>25521625522401674707370011102300230002552190670322322333343345855445107768121012121110111113141816131417141111162216171920212121121523242220241820212025521906713445459559201311132020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020255192017801000100313402171317125519603100151111110000000012345678910112551960181160213324355440011251230417518334965619819773411320501291451618356617719321822092403651981141309102223242526373839404142525354555657586768697071727374838485868788899099100101102103104105106115116117118119120121122131132133134135136137138146147148149150151152153154162163164165166167168169170178179180181182183184185186194195196197198199200201202210211212213214215216217218225226227228229230231232233234241242243244245246247248249250255196031103111111111000000123456789101125519601811702124434754401211901231745334961865817971131934501298206614516117719393551822402198114209102236522253724123242526383940414253545556575867686970717273748384858687888990991001011021031041051061151161171181191201211221301311321331341351361371381461471481491501511521531541621631641651661671681691701781791801811821831841851861941951961971981992002012022102112122132142152162172182262272282292302312322332342422432442452462472482492502552180123102173170630249171192183235526932128279351991320316236140729228112431621342121103914021551224222219916825195766324122793100351161522051256229479919250163342291509366731112019718317954243362095514944108259314257916834166913220488242732067983836616375338229131447867923390521431671414094246425313899145248821555323312814421142171991082121082031311477788167814525315612712314317370109186243248841741931221581941541725724653661131371990146330244193102241151382101811812511012288034252522040699611100244424043172213180616221592541791041786410218514624214223808331141607414712865415818520545172078280132146107242602491802459614568116224135177639024423240180112172173541411201361421423223999633419115022716736191014320021423139522322441891069185181107351870173112023633188181220733016739219561618915311583168236151228125149251391045853215193109509367741791881841071391432227721879672642535218138631025919717724847161169102271582252549525023822725081951139131120137250179249211551072516619015911095153249205240239732515320618511846386211722813897361219913193321515819116511980130172113210188392542321239133117203251199951971549220115618178281581852281261492182331272825253119177102150123347134104137321943154251286112274154141236207211120115612021052241699715710125691072051661901757725220770231159741132251792482152317125289240222143964619118098188452473318111223812616360126561744211114112219913817413313513411682183181132307611914924719224242453815774240139181238207167197113228913114616742188211123706224312518225310812287140110173227209101130103143204159101455111425504860151062431686051168219235218239218181681582062081928432486203242156227160246616993183240292061593124617417512111317210711473182398020414539152165130129237158223133802098719717824813180155861309997120642183536321846563178230177109201167372531211595115285158431774120154181391233623910110591158206219217219841512042442492458442001836525121364226368313382724224112506374204211188971091219910711738216602001242171441711813598185314212097751697319107803921767202246204194111156291611481093214159541212331381652011811115621582141719824623421915120459124157161674717516529177244207107148175163621661743417816910611513873218214126771162371274721111879182332402312051491634274149104156281331032442542341472488111722675271202161532578662371042201141151402411981181581071481862132374736221113165131561381021537719501752421718312920685143562321062282147316810714415317208202133242361121783104421029193200207185252417718914025501804384186166226245933721510722317421812524658221631999070155167221696118118921218325619617225154352307011215229731942311742821218390165166177432228921916518117219912411333982012222202541171961211861241878146882417322235108146164204858910211451511762009215910815850107164211853517713270158841237016542361517310562195519421515774143153167233123223231165191912491599912431214166210254212481022084109614925496123220752396912144158561842401911322523110529207146173165251182491011791551531981146214887197215139117166252223230127601022133525316194255020747204248261331254181513714110134111142752302432315880493924421234831241324022119613314723715022424472229415204192502131752172550224255013862381248324179252351542920618111316743187199111183402924027146562241431981901419521711122619610019224458828127113792542059422226521251551172619115324615643129202429692241238148212710517116418024523812422716725211240189188158100137117118125117977133255019964174223712081162211031397917913821038601727314025312314794177255012199241896525501381987318819924821273251552528250188952401301079114410025501632502442316021419021013262221512201261451301427112911919558113125211141254253207591949971582445114163147244175686317911119753725440611121591079981159217207226150236127194517525502241921424017379249151222123312188830149161255012947243602062277618218515520710111160391502993148237206113193245197861842082373788247196919798173189178551230115220262451112481031271381112124322615194193255019415225501791911962546322612924122632363139248862202442238497448691432221645324313722955264514121161461319923041343215612816756602407229742188517920417815951204681018618190645620023523663422452225315712639402550145319677244211164255010143254252312261112531925501725502241789524017183167221172451401862472461442152063915219516421891153118198127123184184102442756207424719788134242372278822795465224852442913312211126207191196712720161241322332117615515925211816311112863192311812631248155240210103255022610614972116981425133113016423205301812252550128492528224039132117102212164179491051911021716517072143914917914612721916218914322579133117157312251831351081111651882082393218121753148240170721411891432041741857154432261717725173892451271532522231531861151998714621424215123012123125218103192150241223124872411399217122173168711643717663521041602022061251521861292550922181916818787226175252192112271002550112550107111236169238218452719787181058781222491216513712913625424012714831246200239951817790179230208194163211521331251682491511692072257518721418422910220317697258831051518711389195230742198716029736213018316521207557175137222571782481132241259592187157451902071094414551161101504410820214591241892359165185125677622153229189246226711551101336618201195126852432325220722612581523624322624602149122188381571098602252201111996322120679184175117240109179175135172159123532368069211971966444187130292061148322522172824623411714018515815515991882337338237141176462521131871661071452136011339133236902278318355118192170165213152281509616312210014925352305151233210190103248213251921076252411953619217931041185513116219353614640821671151341252022424312818510120205932016219018410417312415323024393148172749986110931491148571762271464816339129147861711382485924183762482032242959196250802422261845381281822271216327147562523485625428141492188332292391411585024116613522721917111115104144106543721218105951051473200234595252232174255019718218175136181155422720399461126615819521281946716814710310115324843103174792259513720923549221381256385911806181042291415232432506821153853109542102502148515821423036154418022858501301726113634191157223218502262021271391512418989139311782182189178160253249146221227125288199519031244701472406722524514418455982231952181249412311714710918099119227941675022022623599185424319197154132186541462181321011361811133614513001162322172012321221215248107111117121247196633012461142214231662415418916019936209721919921216614113522132146164246252076721418523419753161104181113241877321117290752492371721677613571185661371312121845663133121791431911051751010581187298659251152198213134215144204113192610233951522502151964111615242352670167971002412199360411131034815416506614810555144491311951145720712224457382401341831642181332092457750254878014621693179164139181751801332188018823922581122141141138324598917724337176239218243227132223201755261627068143206146961682178814656206024536176231218191827715725414716510518622214941511518621417111112116719864551451601992031467154164291641562814961653114012650240236232225815461587766246439154124745214546612136124228721601192463236241951712141271811591951573572441174313916821412126117317974178708915310186282035241233199356127104136220225254601248131161801392112251312780240228623014641472393417634127180200254871442013412414013820619935572191292082151946321442312401901611111707517321724814212312171571035210913914013015212514018442664242281222811394197241123226231252382618216361174163105225203137100150231801871054637154112196241472031298987224019204421953956237243103129531432235122149202248243932135213722815065221631317615711220727212168571119204215111331161312407820726889412010319626291888121917192452521719549120213892125612127741423122919916117517710724315124662248392417919515412521513860471415652157125852371115341101130701831220414617212689811875722824259161121262482403113322319412631142206751551372281182431574646602411917627145281701571551787071115208961141204719814313630282401431411651802136221011010013676601471982102045723117484254148875925166120701951963116942341251021581144911701212109452689722314011030191173212282542382501571831596724310724621224829169124582417113412499229180154311401802001119715614182299985154352386286302072361072461552242915625012719219113586183361811966228211163144158187133180962541812412325220357921111063979513511592742051251091682171391928100249140208202172611342041592488175169191101191218127225247199111723315412713418110114394211172337522110240121871182518185142195247212312269214270113156871601461488120121224742240311412231781513419044773725256176213164144203361731511818115215579516735218190129162159323182012550423918955178178948918617832734615154209149012100116192231140242121232654175255042242141102383099168902013863021510094102595813381255012422425121523261211621411371772492271032550425324185157203200194591321441032035515890161231140702352422272920722778155246112411801131989919118613211313912312322921731251574473951747931133125175226792295233186164214246247901244017414516015492289819765193216485735240341702332545321223822917920523814623357852192023271782342558142171692501172261802461111152091429590808391124255020024822112797127252031815324513751281601789369188145212146793224727113233882613525219391966240181751392051051332321481861812017642231129177709192234113212215222582151381179322751237317418015223922966225100142125172160140320812232508596011517232200159692191499214818525119713822723824742248247011916723621671471733616529153228638255010219113725411146205536313815413215411717684138193488199241112020730248233233207212101659901571961211061235207382481371231317283125167711004136242592492321712615622812416414718018115138244241002433371206119011465984202601718342216901521161576919123212612425421615846109392261882220979322191673823714271205231772154115140819411525110123495104248233170466516194145129207281772541911732120383920204164221206912252232371832412722522313518023912911339872114416451912461891792073440563112144116174251196191180772471967317253189871932542313919626115441501222141595205165244132231082419243224247827415822420969681801581311387710612315014125190120210223651821891105558219813813410522414818722714018236253930149175169254214304717917924383792097597126244199915925110769219220625114910121617515237117227253711758110135133321522077255019910612019110763232011642051161162371920476224121199914025502119040163153221106874218219819014725177120163801041321541261425538243182251222550223202207212191106175228920623415411813866227271601512550142209699321617218714139246166241921871110521847356323437255022718114322615921824319826451397761511601877852532291881969962210138401642191762361369925317660993642237165104254215252123772550199107146212191110311365094671072915813310814138194209902031873114016481696816425113314914315162512481342391962550195321925121019012320713122913070142301384017418612710573724151255217</image>
    Voici le code pour récupérer l'image :
    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
     
    public BitmapImage bytesToBitmapImage(byte[] value)
            {
                if (value == null || value.Length == 0) return null;
                var image = new BitmapImage();
                using (var mem = new MemoryStream(value))
                {
                    mem.Position = 0;
                    image.BeginInit();
                    image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
                    image.CacheOption = BitmapCacheOption.OnLoad;
                    image.UriSource = null;
                    image.StreamSource = mem;
                    image.EndInit();
                }
                image.Freeze();
                return image;
            }
    "Impossible de trouver un composant d'image adapté pour terminer l'opération."

  2. #2
    Membre éclairé Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Par défaut
    Désolé mais le message s'est enregistré trop vite

    Voici les messages d'erreurs :
    "Longueur non valide pour un tableau de caractères Base 64 ou une chaîne."
    "Impossible de trouver un composant d'image adapté pour terminer l'opération."

    obtenus sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    image.StreamSource = mem;
    Comme le code est vu et revu sur internet je ne vois pas d'ou ça peux venir

    Dans ma classe je déclare la variable image pour la stocker dans ma list<> avant de la sauvegarder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public BitmapImage image;
    Merci de votre aide

  3. #3
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    va falloir parcourir les fiches MSDN des classes, méthodes et attributs que tu utilises, c/c sans comprendre ne t'apportera que des soucis. Sinon je ne vois aucune référence (directe) à une transfo Base 64, et le content que tu nous files n'est pas du Base 64, du coup je comprends pas bien l'erreur Base 64. A voir dans les fiches MSDN

  4. #4
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Effecitvement, il faut regarder un peu ce qui se passe. Tu sérialises une image Bitmap en utilisant un converter JPEG et tu essaies de le désérialiser directement comme si c'était du Bitmap. Du coup erreur ! Rien d'anormal à ce que cela ne fonctionne pas.

  5. #5
    Membre éclairé Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Par défaut
    Bonjour,

    Je vais regarder et tanté de trouver les infos
    J'ai testé avec plusieurs codes trouvés comme celui ci
    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 byte[] bitmapImageToBytes(BitmapImage imageSource)
            {
                Stream stream = imageSource.StreamSource;
                Byte[] buffer = null;
                if (stream != null && stream.Length > 0)
                {
                    using (BinaryReader br = new BinaryReader(stream))
                    {
                        buffer = br.ReadBytes((Int32)stream.Length);
                    }
                }
     
                return buffer;
            }
    et pareille erreur. Ce que je ne sais pas, c'est ou est réellement l'erreur quand je converti en Byte[], quand je sauvegarde, que je récupère ou quand je converti en bitmapimage

    Merci pour aide

  6. #6
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par Speed41 Voir le message
    Je vais regarder et tanté de trouver les infos
    J'ai testé avec plusieurs codes trouvés comme celui ci
    Il ne s'agit pas de testé aveuglément des codes. Il faut en comprendre le principe.

    Citation Envoyé par Speed41 Voir le message
    et pareille erreur. Ce que je ne sais pas, c'est ou est réellement l'erreur quand je converti en Byte[], quand je sauvegarde, que je récupère ou quand je converti en bitmapimage
    As tu lu mon précédent message ? Tu sérialises un JPEG et tu cherches à désérialiser en BITMAP. Cela ne peut pas marcher ! Ce n'est pas une étape en particulier qui pose problème, c'est la globalité car tu utilises des méthodes incompatibles.

  7. #7
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Le principe : un fichier binaire (comme une image) ne peut être directement sérialisé dans un fichier à plat (comme un XML). En effet il a de fortes chances de contenir des octets/jeux d'octets qui ne correspondent pas un caractère dans les différents charset utilisés (UTF8/UTF16 pour XML/.NET). Il faut donc faire une transformation (réversible, pour pouvoir remonter le fichier binaire) qui va changer les bytes en chars sérialisables. Le plus souvent on utilise du Base 64 (ex. certains échanges SOAP, les images dans les RTF ...).

    Il faut donc peut-être ne pas prendre un code tout fait, mais monter un truc from scratch que tu comprendras parfaitement.

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

Discussions similaires

  1. Convertir BitmapImage en tableau de byte en wpf
    Par Invité dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 11/02/2014, 16h52
  2. Convertir un array<Byte>^ en unsigned char*
    Par xxiemeciel dans le forum C++/CLI
    Réponses: 5
    Dernier message: 12/06/2007, 20h23
  3. [VBA-x]Convertir fichier en bytes()
    Par Stef784ever dans le forum Général VBA
    Réponses: 2
    Dernier message: 01/02/2007, 10h11
  4. [debutant]Convertir un pointeur byte en String
    Par patmaba dans le forum SL & STL
    Réponses: 3
    Dernier message: 22/07/2005, 13h34
  5. [Conversion]convertir int[] en bytes[]
    Par tony_big_guy dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2005, 15h47

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