Flux des fichiers images

Résolu
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 8 mars 2005 à 12:09
soussa510 Messages postés 4 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 22 décembre 2005 - 14 déc. 2005 à 21:14
Alors, voila mon titre est pas trop explicite mais par ce message, je vais essayer de l'être.



J'ai un code qui réceptionne une image par une connexion TCP/IP.
L'image est envoyer sur la forme d'un tableau de bytes. Jusque là ok !
J'ai donc fabriquer à partir de là un fichier ouvert en écriture
binaire. Et en y injectant le tableau, je retrouve mon image cool !!!
Ou est la question ?



La voila, a partir de ce fichier, je fabrique un objet image par
l'opération Image.FromFile et ainsi , je peu travailler avec.
Seulement, le pb est que, avec ma méthode, je dois passer par la
sauvegarde sur mon disque de l'image.

J'aimerais donc savoir s'il est possible de créer directement un objet
image à partir d'un tableau de bytes ( byte[] Buffeur). J'ai vu que la
classe image pouvait accepter la méthode :



Image monImage = Image.FromStream(...) et la je c pas quoi
mettre , j'ai tenter directement le buffer mais ca marche pas car il
faut un stream (je c pas ce que c).



Je voudrais donc obtenir un objet image ou sinon un objet bitmap ou un
objet graphics ( à vous de décider, c'est pareil pour moi à partir de
ça je me débrouille, le mieux serait un graphics mais bon ) à partir
d'un Buffeur contenant un tableau de byte[].



Merci et bonne journée à tous,

Billou_13
Bask En Force

6 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
8 mars 2005 à 15:21
Essaye ca :
Si b est ton tableau de byte (byte[] b)

MemoryStream ms = new MemoryStream(b);
Image img = Image.FromStream(ms);
ms.Close();

Voilà, img contient l'image qui était dans ton tableau de byte.

Séb

Sébastien FERRAND
Blog :
http://blogs.developpeur.org/sebmafate
3
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
8 mars 2005 à 15:26
oki merci beaucoup à toi.

Je venais juste de trouver la même solution dans mon livre. Je fais un
truc et je poste le code résultat pour les désireux de savoir lol

Billou_13
Bask En Force
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
8 mars 2005 à 15:34
voila le code que j'ai implémente pour superposer deux images .gif l'une sur
l'autre sachant que la première provient d'un flux d'octets (tableau de
byte[]) :



//La fonction recoit l'image sur forme de tableau de bytes[] ainsi que la taille de cette image

//Elle renvoie l'image superposée
byte[] AddMarkerToImage(byte[] ImageBuffer, int ImageLength)

{

byte[] ImageConvert;
MemoryStream ImageStream = new
MemoryStream(ImageBuffer,0,ImageLength);
Bitmap IMap = new Bitmap(Image.FromStream(ImageStream));
ImageStream.Close();
Bitmap IMarker = new
Bitmap(Image.FromFile(_ImageMarker+".gif"));
IMarker.MakeTransparent(Color.White);
Graphics GrMap =
Graphics.FromImage(IMap);
int X_Map,Y_Map;
X_Map =
(IMap.Width/2)-(IMarker.Width/2);
Y_Map =
(IMap.Height/2)-(IMarker.Height/2);
GrMap.DrawImage(IMarker,X_Map,Y_Map);
GrMap.Dispose();
//ENLEVER LES COMMENTAIRES POUR STOCKER SUR LE DISQUE

//string SaveImage =
_ImageMarkedMap+_ImageNumber.ToString()+".gif";
//IMap.Save(SaveImage,System.Drawing.Imaging.ImageFormat.Gif);
MemoryStream ImageConvertStream =
new MemoryStream();
IMap.Save(ImageConvertStream,System.Drawing.Imaging.ImageFormat.Gif);
IMap.Dispose();
IMarker.Dispose();
ImageConvert = new
byte[ImageConvertStream.Length];
ImageConvert =
ImageConvertStream.GetBuffer();
ImageConvertStream.Close();
return(ImageConvert);
}


Billou_13
Bask En Force
0
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
24 mai 2005 à 16:40
Bonjour,



J'ai exactement l'inverse. Je m'explique, je possede un bitmap en memoire que je doit faire passer dans une connexion TCP/IP.



Je peux via GetPixel faire passer mon image mais je pense que sa doit etre tres long.



Est-ce qu'il existe une possiblilité viable (rapide) de transformé mon
image en tableau de byte et apres via la socket le tour est joué



Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fdouieb Messages postés 264 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 12 juin 2013 3
24 mai 2005 à 17:15
Excusé moi

je viens de trouver une solution que je doit mettre en place pour vérifier la
rapidité
0
soussa510 Messages postés 4 Date d'inscription mardi 22 novembre 2005 Statut Membre Dernière intervention 22 décembre 2005
14 déc. 2005 à 21:14
Bonjour
voulez vous m'envoyer votre code pour envoyer une image d'un client à l'autre
mon adresse est:
anbarisanaa82@yahoo.fr
merci d'avance
0
Rejoignez-nous