Conversion tableau de byte en image jpeg [Résolu]

Signaler
Messages postés
71
Date d'inscription
mardi 4 novembre 2008
Statut
Membre
Dernière intervention
26 août 2009
-
kakamo
Messages postés
7
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
20 février 2011
-
salut à tous

voila je recupere une image qui est stockée sur sql server en format image, je l'affecte a un tableau de byte (byte [] ) mais je ne vois pas comment convertir ce tableau en image jpg ...
Pourriez vous m'aider svp??!!!

12 réponses

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
16
A tout hasard (car je n'ai jamais testé ^^), tu peux essayer le code suivant, il ne doit pas être loin de la vérité:MemoryStream ms new MemoryStream(tab); //using System.IO & tab tableau de byte
Image img = Image.FromStream(ms); //using System.Drawing
pictureBox1.Image = img; // avec pictureBox1 objet PictureBox que tu auras déposé sur ta Form

Bonne après midi,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Messages postés
71
Date d'inscription
mardi 4 novembre 2008
Statut
Membre
Dernière intervention
26 août 2009
1
salut
merci pour toutes vos réponses
oui aprés de convertir le tableau de byte en une image je veux ensuite l'afficher à partir d'un site web.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
j'ai déjà fait une source la dessus... ou presque !

http://www.csharpfr.com/codes/CONVERSION-IMAGE-BASE64STRING-INVERSEMENT_33379.aspx

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
Messages postés
71
Date d'inscription
mardi 4 novembre 2008
Statut
Membre
Dernière intervention
26 août 2009
1
Merci Billou_13
j'ai trouver aussi ce code, mais mon problème c'est comment savoir que img est de type jpeg ??
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

tu dois sauver le mime type dans la db dans un champ text normal
tu ne sais pas le savoir autrement
Messages postés
71
Date d'inscription
mardi 4 novembre 2008
Statut
Membre
Dernière intervention
26 août 2009
1
tu dois sauver le mime type dans la db dans un champ text normal
tu ne sais pas le savoir autrement





désolé, je n'est pas compris
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

sorry

ce que je veux dire plus simplement c'est que tu ne sais pas savoir le type du fichier si tu as seulement son tableau de byte, tu as obligé de spécifier quelque part que tel fichier est de tel type.

typiquement en db

tu sauveras ton image, le titre de ton image, son type (extension)
Messages postés
71
Date d'inscription
mardi 4 novembre 2008
Statut
Membre
Dernière intervention
26 août 2009
1
ah, ok merci
Messages postés
153
Date d'inscription
vendredi 9 août 2002
Statut
Membre
Dernière intervention
18 septembre 2009

Bonjour,

Je ne pense pas que sauvegarder le type d'image dans la bdd soit nécessaire, puisque Image.FromStream() ne nécessite pas de format d'image pour la lire.
Ce que tu peux essayer :

byte[] tableau; //Tu récupère ton tableau de bytes
Image image;
using(MemoryStream ms = new MemoryStream(tableau))
{
  image = Image.FromStream(ms);
}
//Fin du code

Si ça ne marche pas, c'est que ton image n'est pas enregistrée comme fichier dans ton champ.
Messages postés
561
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
10 juin 2010

je n'ai pas dit que c'était nécessaire

je dis pour plus tard si tu veux la réouvrir par exemple

disons que tu fais un generic handler qui va chercher ton binary dans la db, c'est bien de pouvoir spécifier le type de fichier dans le mime du response pour que le fichier soit reconnu par le navigateur qui peut éventuellement ouvrir la bonne application
Messages postés
153
Date d'inscription
vendredi 9 août 2002
Statut
Membre
Dernière intervention
18 septembre 2009

Effectivement, si le but est de pouvoir afficher l'image à partir d'un site web il faut conserver le type MIME si on ne veut pas reconvertir l'image à chaque fois...

Par contre, si je m'en réfère à la question d'origine, la question est un peu floue...
Si j'ai bien compris, c'est transformé le tableau de byte récupérer depuis la base de donnés, le convertir en objet System.Drawing.Image puis le sauvegarder sur disque au format jpeg ?

La conversion du tableau de byte en Image est décrite dans mon post précédent.
Ensuite, la sauvegarde c'est :
image.Save("C:\\a.jpg", ImageFormat.Jpg);
Messages postés
7
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
20 février 2011