2010-06-14 20 views
5

ho questo codice:parametro non è valido quando ottenere un'immagine dal flusso

   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"); 

ottengo questo errore al Image.FromStream (ms) chiamata:

System.ArgumentException: Il parametro non è valido . a System.Drawing.Image.FromStream (ruscello, booleano useEmbeddedColorManagement, booleano validateIma

Come posso risolvere questo? Un paio di link che risolvono questo problema (uno su un thread MSDN) sono rotti così mi sono perso.

risposta

-1

Provare per riavvolgere flusso di memoria al proprio all'inizio dopo che hai scritto byte in esso.

ms.Seek(0, SeekOrigin.Begin); 

Than è possibile creare Image.FromStream

+0

Stesso problema. Il codice è: MemoryStream ms = nuovo MemoryStream (newbytes, 0, newbytes.Length); ms.Seek (0, SeekOrigin.Begin); ms.Write (newbytes, 0, newbytes.Length); Immagine img = Image.FromStream (ms); – duka1

+0

Si dovrebbe cercare dopo ms.Write –

+0

Ancora lo stesso problema. Ho preso quella riga di codice e l'ho incollata e incollata dopo la scrittura. – duka1

1

Se si inizializza un MemoryStream con un array di byte (che è quello che sto assumendo che sia newbytes), non dovresti aver bisogno di scriverci sopra.

La chiamata a Write(newbytes, 0, newbytes.Length) nell'esempio è completamente ridondante.

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

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

I lavori di cui sopra per me dove newbytes è un array di byte del contenuto di un file immagine sul mio disco rigido.

Problemi correlati