Bonjour,

Dans une application je dois sérialiser une image au travers d'un binarywriter, puis je dois la charger dans une autre et l'afficher.

Voici le morceau de code s'occupant de la sérialisation :
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
 
FileStream fs = new FileStream(file, FileMode.Create, FileAccess.Write);
BinaryWriter bin = new BinaryWriter(fs);                         
 
bin.Write((short)this.Animations.Count);
 
for (int i = 0; i < this.Animations.Count; i++)
{
    MemoryStream stream = new MemoryStream();
    BitmapEncoder encoder = new PngBitmapEncoder();
 
    encoder.Frames.Add(BitmapFrame.Create(Animations[i].Image));
    encoder.Save(stream);
 
    stream.Seek(0, SeekOrigin.Begin);
 
    bin.Write((int)stream.GetBuffer().Length);
    bin.Write(stream.GetBuffer());
 
    stream.Close();
}
 
bin.Close();
Et celle s'occupant de la déserialisarion

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
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader bin = new BinaryReader(fs);
 
int animCount = bin.ReadInt16();
int imageBytesLenght;
byte[] imageBytes;
BitmapSource img;
 
for (int i = 0; i < animCount; i++)
{    
    imageBytesLenght = bin.ReadInt32();
    imageBytes = bin.ReadBytes(imageBytesLenght);
    img = new BitmapImage();
    MemoryStream stream = new MemoryStream(imageBytes);
    BitmapDecoder dec = new PngBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
    img = dec.Frames[0];
    stream.Close();
}
 
bin.Close();
Le problème, c'est que si je charge bien une image via ma déserialisation, il est totalement impossible de l'afficher...

Quelqu'un a une idée?

Merci,

KiTe