tengo algunos datos binarios que quiero guardar como imagen. Cuando intento guardar la imagen, arroja una excepción si la secuencia de memoria utilizada para crear la imagen se cerró antes del guardado. 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.Image.Save (..) arroja una excepción GDI + porque la secuencia de memoria está cerrada
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 a cómo podría guardar una imagen con la corriente cerrada? No puedo confiar en que los desarrolladores recuerden cerrar la secuencia después de guardar la imagen. De hecho, el desarrollador NO TENDRÍA NINGUNA IDEA de que la imagen se generó usando una secuencia de memoria (porque ocurre en algún otro código, en cualquier otro lugar).
Estoy muy confundido :(
Por favor, no utilizar imágenes por código como este, hace que sea más difícil para las personas para copiar el código con el fin de tratar de cambiar a un estado de trabajo. Lo editaré para usar la sintaxis de reducción. –
Recibí este comentario de @HansPassant en otra [pregunta] (https://stackoverflow.com/questions/33331370/a-generic-error-occurred-in-gdi-exception-while-uploading-an-image-file) . Obtendrá esta excepción siempre que el códec tenga problemas para escribir el archivo. Una buena declaración de depuración para agregar es System.IO.File.WriteAllText (ruta, "prueba") antes de la llamada a Guardar(), verifica la capacidad básica para crear el archivo. Ahora obtendrá una buena excepción que le dice lo que hizo mal. –