Flux des fichiers images [Résolu]

Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
- - Dernière réponse : 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
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 144 internautes nous ont dit merci ce mois-ci

Commenter la réponse de sebmafate
Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
15
0
Merci
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
Commenter la réponse de billou_13
Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
15
0
Merci
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
Commenter la réponse de billou_13
Messages postés
264
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
12 juin 2013
3
0
Merci
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
Commenter la réponse de fdouieb
Messages postés
264
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
12 juin 2013
3
0
Merci
Excusé moi

je viens de trouver une solution que je doit mettre en place pour vérifier la
rapidité
Commenter la réponse de fdouieb
Messages postés
4
Date d'inscription
mardi 22 novembre 2005
Statut
Membre
Dernière intervention
22 décembre 2005
0
Merci
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
Commenter la réponse de soussa510