从流中获取图像时参数无效

时间:2010-06-14 10:46:26

标签: c# stream

我有这段代码:

              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:参数无效。    在System.Drawing.Image.FromStream(Stream stream,Boolean useEmbeddedColorManagement,Boolean validateIma

我该如何解决这个问题?解决这个问题的一些链接(一个在MSDN线程上)被破坏,所以我迷路了。

2 个答案:

答案 0 :(得分: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是我硬盘上图像文件内容的字节数组。

答案 1 :(得分:-1)

尝试在将字节写入其中后将内存流倒回到最开始。

ms.Seek(0, SeekOrigin.Begin);

可以创建Image.FromStream