Ecrire une Image depuis un memory stream

Signaler
Messages postés
8
Date d'inscription
mercredi 9 juin 2004
Statut
Membre
Dernière intervention
9 janvier 2008
-
Messages postés
8
Date d'inscription
mercredi 9 juin 2004
Statut
Membre
Dernière intervention
9 janvier 2008
-
Vraiment bizarre, j'ai fais une fonction me permettant de charger une image de la base de donnée pour la traiter et l'afficher.
Tout fonctionne bien avec le format GIF.

Mais avec le format EMF, je suis obligé d'écrire l'image sur le disque puis de faire un Image.FromFile pour que ça marche :

// mes byte issue de la BBD
response = (



byte
[])images.GetImage();

System.Drawing.

Image
fullSizeImg;





// à cause du format EMF je suis obligé d'ajouter ce bout de code pour lire l'image dans ma variable fullsizeImg
using
(

FileStream
strm =

File
.Create(context.Server.MapPath(

"temp"
)+

"/ImageAuFormatEmf.emf"
))
{


try

{


foreach
(

byte
bNext

in
response)
{
strm.WriteByte(bNext);
}
}


finally

{
strm.Close();
}}
fullSizeImg =


Image
.FromFile(context.Server.MapPath(

"temp"
) +

"/ImageAuFormatEmf.emf"
);












//ceci est mon ancien code, il marche très bien pour le format GIF, BMP, JPG etc... mais pas pour le EMF

using
(

MemoryStream
ms =

new



MemoryStream
(response, 0, response.Length))
{
ms.Write(response, 0, response.Length);



fullSizeImg = Image.FromStream(ms);



}

C'est qd même bizarre...

3 réponses

Messages postés
8
Date d'inscription
mercredi 9 juin 2004
Statut
Membre
Dernière intervention
9 janvier 2008

Au passage voici l'erreur :

Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.ArgumentException: Le paramètre n'est pas valide.

Ligne 157 :                fullSizeImg = Bitmap.FromStream(ms);
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
16
si tu avais pris la peine daller sur la msdn, tu aurais vu que la description de ton exception existe....

http://msdn2.microsoft.com/fr-fr/library/93z9ee4x(VS.80).aspx

J'ai envie de dire "t'abuses". Nous ne sommes ni la msdn, ni un moteur de recherches (alors pour un truc décrit dans la msdn de manière standard....)
Messages postés
8
Date d'inscription
mercredi 9 juin 2004
Statut
Membre
Dernière intervention
9 janvier 2008

Leprov, je te remercie pour ta réponse.
Je suis bien évidement allé sur la msdn, et j'ai déjà pas mal farfouillé sur divers sites.

Je comprend très bien la nature du message d'erreur : "Le format d'image du flux n'est pas valide".

Mon problème : je ne comprend pas pourquoi je ne la rencontre que pour des images au format emf.

Exemple :

J'ai 2 images
- image1.gif
- image2.emf

Je les insert avec la même méthode dans ma base de donnée.

Je les lis avec la même fonction : response = (byte [])images.GetImage();

Et lorsque j'envoie les byte ds ma variable image avec cette fonction :

using(
MemoryStreamms =
new
MemoryStream(response, 0, response.Length))
{
ms.Write(response, 0, response.Length);

fullSizeImg = Image.FromStream(ms);
}

Tout se passe très bien pour le fichier gif, mais pas pour le fichier emf.
Pourtant mes bytes en base de donnée sont correct, puisque lorsque je les écrit sur mon DD pour les lire à l'aide de la fonction
Image.FromFilemon fichier emf est bien lu.