Bonjour,

Je travaille actuellement sur des caméra AXIS qui fournissent un flux mjpg.
J'arrive à récupérer chaque fichier JPEG de ce flux et les ecrirent distinctement dans des fichiers.
Maintenant, j'aimerai en plus de les sauvegarder de pouvoir les visualiser dans une meme pictureBox (ou autre) pour voir la video depuis mon application.
J'ai parcouru le forum et j'ai trouvé des indications que je n'arrive pas à employer.
Je lis les image caractere par caractere afin de chercher le début et la fin de l'image dans le flux. Ensuite j'ecris chaque caractere dans un fichier. En plus de celà, je les place dans une ArrayList car je ne connais pas la taille de l'image à l'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
WebRequest myRequest;
StreamReader streamRead = null;
FileStream fs;
StreamWriter ecrire;
Encoding encoding = System.Text.Encoding.GetEncoding("iso-8859-1"); 
Stream myStream;
WebResponse myResponse;
char forallMASK = Convert.ToChar(255); //OxFF
char InitImgMASK = Convert.ToChar(216);//OxD8
char EndImgMASK = Convert.ToChar(217); //OxD9
char first = Convert.ToChar(0);
char[] second = new char[1];
ArrayList myAL = new ArrayList();
myRequest = System.Net.WebRequest.Create(IP);
myRequest.Credentials = new System.Net.NetworkCredential(User, Pass);
myResponse = myRequest.GetResponse();
myStream = myResponse.GetResponseStream();
streamRead = new System.IO.StreamReader(myStream, encoding);
fs = new System.IO.FileStream(path, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
ecrire = new System.IO.StreamWriter(fs, encoding);
while ((first.CompareTo(forallMASK) != 0) || (second[0].CompareTo(InitImgMASK) != 0))
{
first = second[0];
streamRead.Read(second, 0, 1);
}
while ((first.CompareTo(forallMASK) != 0) || (second[0].CompareTo(EndImgMASK) != 0))
{
ecrire.Write(first);
myAL.Add(first);
first = second[0];
streamRead.Read(second, 0, 1);
}
ecrire.Write(first);
myAL.Add(first);
ecrire.Write(second);
myAL.Add(second);
ecrire.Close();
fs.Close();
streamRead.Close();
myStream.Close();
A la fin de la réception d'une image, je me retrouve avec un fichier .jpg sauvegardé et une ArrayList en mémoire.
Je voudrais depuis les caractere contenu dans l'ArrayList cree mon image.
Depuis un MemoryStream je peux afficher l'image grace à un tableau de Byte[ ](image):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
MemoryStream myMS = new MemoryStream(image);
pictureBox1.Image = Image.FromStream(myMS);
Malheureusement, mon ArrayList (myAL) est rempli de Char. Je dois donc convertir chaque Char en Byte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Array imageA = myAL.ToArray();
char[] imageB = new char[imageA.Length];
byte[] image = new byte[imageA.Length];
for (int i = 0; i < imageA.Length-1; i++)
{
imageB[i] = (char)imageA.GetValue(i);
}
image = System.Text.ASCIIEncoding.UTF8.GetBytes(imageB, 0, imageA.Length - 1);
Ici, image est donc un tableau de bytes.

Mais ca marche pas
il me dit que mon myMS lors de l'appel à Image.FromStream(myMS); n'est pas valide.

Ca fait un moment que je me triture l'esprit mais là j'ai besoin d'aide.

Merci

f.colo

[edit]Tag et Titre modifier, merci Morpheus du petit rappel je le referai plus ^^[/edit]