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 :
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
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();
Le problème, c'est que si je charge bien une image via ma déserialisation, il est totalement impossible de l'afficher...
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();
Quelqu'un a une idée?
Merci,
KiTe
Partager