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 :

Erreur conversion Base64, Byte[]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Cybercope
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mai 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Programmeur amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 78
    Par défaut Erreur conversion Base64, Byte[]
    Bonjour !

    Je cherche à envoyer une image via une connexion TCP Client/Serveur.
    La connexion ne déroule parfaitement et les transferts aussi.

    Pour envoyer mon image, je souhaite la convertir en tableau de Byte[] puis en string Base64 via ce 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
    16
    17
    18
     
    public void PrintScreen()
            {
                Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height);
                Graphics graphics = Graphics.FromImage(bitmap as Image);
                graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);
     
                byte[] bytesend = ImageToByte(bitmap);
                string s = Convert.ToBase64String(bytesend);
     
                SEND("I/" + s);
            }
     
            public static byte[] ImageToByte(Image img)
            {
                ImageConverter converter = new ImageConverter();
                return (byte[])converter.ConvertTo(img, typeof(byte[]));
            }
    L'envoi se fait avec
    NB: Lorsque je recupère ma chaine du coté serveur, je fait un split pour ne prendre que la partie après le I/

    Par la suite j'essaye de convertir ma chaine Base64 en Byte[].

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void ShowImage(string Base64Str)
            {
                byte[] newBytes = Convert.FromBase64String(Base64Str);
                Image img = byteArrayToImage(newBytes);
            }
    Et c'est ici que j'ai un message d'erreur : Longueur non valide pour un tableau bytes Base64 ou string.

    J'ai essayer d'afficher la string Base64Str avant, et elle est bien au format base64.

    J'ai cherché sur internet, sans trouver de solution qui fonctionne...

    Merci de votre aide

    Ind6x

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Bonjour,

    J'ai eu dans le passé une expérience de conversion base64, pour me rendre compte après bien du temps perdu que j'avais un caractère en fin de flux qui n'avait rien à faire ici ... je ne me rappel plus exactement mais c'était il me semble un saut de ligne qui s'est retrouvé à être converti aussi... bref il y a des règles pour la base64 qui te permettent de savoir combien du doit avoir de caractère, la longueur peut être calculée il me semble.
    Ah et essaye de chiffrer ton flux et de le déchiffrer dans des outils en ligne par exemple pour voir si c'est ton déchiffrage ou ton chiffrage qui déconne ...
    Et idem de chiffrer sur un outils qui fonctionne pour voir si tu as le même résultat avec ton outils...

    En tout cas ça me rappel de mauvais souvenir

    Bon courage,
    J@ck.

  3. #3
    Membre confirmé Avatar de Cybercope
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    Mai 2014
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Programmeur amateur

    Informations forums :
    Inscription : Mai 2014
    Messages : 78
    Par défaut
    J@ckHerror Merci de vous intéresser à mon problème !

    Maintenant mon problème est résolu !

    Je mets ici la solution :

    Au lieux de convertir mon tableau de byte[] en base64, j'envoie directement mon tableau avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    byte[] bytesend = ImageToByte(bitmap);
     
                SEND("IM/" + bytesend.Length.ToString());
                stream.Write(bytesend, 0, bytesend.Length);
    NB : la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SEND("IM/" + bytesend.Length.ToString());
    permet juste de dire au destinataire qu'il faut qu'il s’apprête à recevoir une image et j'envoie la taille de celle ci.

    De l'autre coté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    byte[] bytes = new byte[buffersize];
    stream.Read(bytes, 0, buffersize);
    NB : buffersize = bytesend.Length.ToString()

    Voila !

    Merci encore !

    Ind6x

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

Discussions similaires

  1. Erreur conversion de type - import fichier excel
    Par Greg84 dans le forum Access
    Réponses: 2
    Dernier message: 16/08/2006, 16h32
  2. Conversion Integer -> byte[]
    Par La Truffe dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 18h30
  3. Conversion Enum <-> byte
    Par Don ViP dans le forum Langage
    Réponses: 5
    Dernier message: 03/05/2006, 14h51
  4. [VB.NET] Conversion int-> bytes sur 4 octets
    Par SteelBox dans le forum Windows Forms
    Réponses: 11
    Dernier message: 09/01/2005, 22h08
  5. [VB.NET] Erreur conversion de code c=>vb (opendialogfile)
    Par hirochirak dans le forum Windows Forms
    Réponses: 19
    Dernier message: 02/06/2004, 16h31

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