ho alcuni dati binari che voglio salvare come immagine. Quando provo a salvare l'immagine, viene generata un'eccezione se il flusso di memoria utilizzato per creare l'immagine è stato chiuso prima del salvataggio. Il motivo per cui lo faccio è perché sto creando immagini dinamicamente e come tale .. ho bisogno di utilizzare un flusso di memoria.
questo è il codice:
[TestMethod]
public void TestMethod1()
{
// Grab the binary data.
byte[] data = File.ReadAllBytes("Chick.jpg");
// Read in the data but do not close, before using the stream.
Stream originalBinaryDataStream = new MemoryStream(data);
Bitmap image = new Bitmap(originalBinaryDataStream);
image.Save(@"c:\test.jpg");
originalBinaryDataStream.Dispose();
// Now lets use a nice dispose, etc...
Bitmap2 image2;
using (Stream originalBinaryDataStream2 = new MemoryStream(data))
{
image2 = new Bitmap(originalBinaryDataStream2);
}
image2.Save(@"C:\temp\pewpew.jpg"); // This throws the GDI+ exception.
}
Qualcuno ha qualche suggerimento su come salvare un'immagine con lo stream chiuso? Non posso fare affidamento sul fatto che gli sviluppatori si ricordino di chiudere lo stream dopo che l'immagine è stata salvata. In effetti, lo sviluppatore NON avrebbe IDEA che l'immagine sia stata generata usando un flusso di memoria (perché accade in qualche altro codice, altrove).
Sono veramente confuso :(
using
blocco. Penso che sia originalBinaryDataStream2
stato automaticamente eliminato alla fine dell'utilizzo. E questo genererebbe l'eccezione.