2010-06-14 92 views
5

越来越像我有这样的代码:参数无效时从流

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

我在Image.FromStream得到这个错误(MS)的呼叫:

System.ArgumentException:参数无效。我有一个解决这个问题的几个链接(MSDN线程上的一个)被打破,所以我迷路了。

回答

-1

尝试倒带内存流一开始你写字节到它之后。

ms.Seek(0, SeekOrigin.Begin); 

比它可以创建Image.FromStream

+0

同样的问题。代码是: MemoryStream ms = new MemoryStream(newbytes,0, newbytes.Length); ms.Seek(0,SeekOrigin.Begin); ms.Write(newbytes,0,newbytes.Length); 图片img = Image.FromStream(ms); – duka1 2010-06-14 10:57:23

+0

你应该寻找ms.Write – 2010-06-14 10:58:16

+0

仍然是同样的问题。我写了这行代码,并在写入后剪切并粘贴。 – duka1 2010-06-14 11:01:37

1

如果用初始化一个MemoryStream一个字节数组(这正是我所假设的newbytes),你不需要写入它。

您样本中Write(newbytes, 0, newbytes.Length)的呼叫是完全多余的。

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

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

对我来说,上述工程,其中newbytes是一个图像文件的内容的字节数组我的硬盘驱动器上。