laymouna98
Messages postés71Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention26 août 2009
-
21 janv. 2009 à 11:48
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 2010
-
22 janv. 2009 à 09:19
salut à tous
je travaille avec VS2008, c# et sql server 2005
j'ai deux bases de données sql server chacune sur une machine à part j'ai la même table article sur les deux bases, j'ai le champs image de type image sur chacunne des table, je fait à travers d'un Web service récupérer le champs image du table1 de la base1 et faire l'insertion dans l'autre table du deuxième base, il est inseré sous forme d'un tableau byte.
ensuite je veux faire la conversion de ce tableau de byte en image il me génère une erreur, alors que c'est fonctionnel pour l'autre tableau de byte de l'image du première table.
ma question c'est lors de l'insersion des données du table1 dans la table2 est ce que les données seront modifiés ou altérés???
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 21 janv. 2009 à 15:42
la question est : comment recrées tu l'image?
si ton (pseudo) code est le suivant, cest normal que ca plante, a cause d'un bug dans le framework :
void GetImage()
{
MemoryStream ms = new MemoryStream();
ms.Write(MonImageSousFormeDeTableauDeByte);
Image g = Image.FromStream(ms);
ms.Close();
MethodQuiUtiliseLImage();
}
Le bug est que lorsque tu ferme le stream, l'image n'a pas fini d'être créée. Deux solutions :
1 - Modifier ton code de la manière suivante
void GetImage()
{
MemoryStream ms = new MemoryStream();
ms.Write(MonImageSousFormeDeTableauDeByte);
Image g = Image.FromStream(ms);
ms.Close();
MethodQuiUtiliseLImage();
}
La, lorsque tu ferme le stream, l'image est réellement chargée et le stream peut etre libéré.
2 - Créer une image temporaire pour forcer a lire le stream :
public Image GetImage(MemoryStream s)
{
Image Temp = Image.FromStream(s);
Bitmap b = new Bitmap(Temp.Width, Temp.Height);
Graphics g = Graphics.FromImage(b);
g.DrawImage(Temp, 0, 0, Temp.Width, Temp.Height);
g.Dispose();
Temp.Dispose();
return b;
}
Au moins, l'image est réellement chargée lorsque tu ferme le stream passé en entrée de la méthode
laymouna98
Messages postés71Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention26 août 20091 21 janv. 2009 à 16:06
j'ai fait le presque le même code mais il me génère une erreur dans la ligne suivante :
Image Temp = Image.FromStream(s);
L'erreur est : Parameter is not valid.
je croi que l'erreur et dans le tableau de byte transférer de le base de mon application vers la base du site web.
laymouna98
Messages postés71Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention26 août 20091 21 janv. 2009 à 17:17
bon j'ai insérer d'autre type de données comme varcher, int etc ca va ca marche et je peut lire les données transférer de l'autre table mais pour l'image je ne peut que récupérer un tableau de byte.
laymouna98
Messages postés71Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention26 août 20091 21 janv. 2009 à 17:42
tu ma dit
si ton (pseudo) code est le suivant, cest normal que ca plante, a cause d'un bug dans le framework :
void GetImage()
{
MemoryStream ms = new MemoryStream();
ms.Write(MonImageSousFormeDeTableauDeByte);
Image g = Image.FromStream(ms);
ms.Close();
}
mais c'est quoi la diférence entre ca et la première solution?