Tengo algunos datos binarios que quiero guardar como imagen. Cuando intento guardar la imagen, arroja una excepción si el flujo de memoria utilizado para crear la imagen se cerró antes de guardar. La razón por la que hago esto es porque estoy creando imágenes dinámicamente y como tal ... necesito usar un flujo de memoria.
este es el código:
[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.
}
¿Alguien tiene alguna sugerencia sobre cómo podría guardar una imagen con la transmisión cerrada? No puedo confiar en que los desarrolladores recuerden cerrar la transmisión después de guardar la imagen. De hecho, el desarrollador NO tendría NINGUNA IDEA de que la imagen se generó usando un flujo de memoria (porque sucede en algún otro código, en otro lugar).
Estoy realmente confundido :(
using
bloque. Creo que originalBinaryDataStream2
se eliminó automáticamente al final del uso. Y eso arrojaría la excepción.