2010-06-14 18 views
5

tengo este código:parámetro no es válido al conseguir la imagen de la corriente

   MemoryStream ms = new MemoryStream(newbytes, 0, 
      newbytes.Length); 
       ms.Position = 0;  
     ms.Write(newbytes, 0, newbytes.Length); 
       Image img = Image.FromStream(ms); 
      img.Save(@"C:\Users\gsira\Pictures\Blue hills5.jpg"); 

consigo este error en el Image.FromStream (ms) llamada:

System.ArgumentException: El parámetro no es válido . en System.Drawing.Image.FromStream (corriente Stream, Boolean useEmbeddedColorManagement, Boolean validateIma

¿Cómo puedo resolver esto? Un par de enlaces que resuelven este problema (una en una rosca MSDN) están rotas, así que estoy perdido.

Respuesta

-1

Intentar rebobinar secuencia de memoria al principio después de que escribió bytes en él.

ms.Seek(0, SeekOrigin.Begin); 

de lo que es posible crear Image.FromStream

+0

Mismo problema. El código es: MemoryStream ms = new MemoryStream (newbytes, 0, newbytes.Length); ms.Seek (0, SeekOrigin.Begin); ms.Write (newbytes, 0, newbytes.Length); Imagen img = Image.FromStream (ms); – duka1

+0

Debe buscar después de ms.Write –

+0

Sigue el mismo problema. Tomé esa línea de código y la corté y pegué después de la escritura. – duka1

1

caso de que arranque un MemoryStream con una matriz de bytes (que es lo que supongo que es newbytes), no debería necesitar escribir en ella.

La llamada a Write(newbytes, 0, newbytes.Length) en su muestra es completamente redundante.

var s = new MemoryStream(newbytes, 0, newbytes.Length); 
var i = Image.FromStream(s); 

i.Save(@"C:\Users\gsira\Pictures\Blue hills5.jpg"); 

lo anterior funciona para mí, donde newbytes es una matriz de bytes del contenido de un archivo de imagen en el disco duro.

Cuestiones relacionadas