Image i = Image.FromFile( @"e:\property.bmp" );MemoryStream sw = new MemoryStream();
//将图片保存成流
i.Save(sw,i.RawFormat);
//读取图片数据的大小
int stillsSize = Convert.ToInt32(sw.Length);
byte[] stillsData = new byte[stillsSize];
//将流中的数据存入stillsData中。
sw.Read(stillsData,0,stillsSize);
Stream ms = new MemoryStream( stillsData);
Image i2 = Image.FromStream( ms ); 上述代码的最后一句报异常: System.ArgumentException : 使用了无效参数。
请问这是什么原因,多谢!

解决方案 »

  1.   

    Image i = Image.FromFile( @"e:\property.bmp" );
                System.IO.MemoryStream sw = new System.IO.MemoryStream();
                //将图片保存成流
                i.Save(sw,i.RawFormat);
               
                //读取图片数据的大小
                //int stillsSize = Convert.ToInt32(sw.Length);
                //byte[] stillsData = new byte[stillsSize];
                //将流中的数据存入stillsData中。
                //sw.Read(stillsData,0,stillsSize);
               byte[] stillsData = sw.ToArray();
                System.IO.Stream ms = new System.IO.MemoryStream(stillsData);
                
                Image i2 = Image.FromStream( ms);
      

  2.   

    byte[] stillsData = sw.ToArray();
      

  3.   

    这是因为sw.Read与当前sw的position属性有关,从当前位置读起,所以读出来的byte[]顺序就不对了,也就没办法还原成图片了;sw.ToArray()方法就可以不管当前位置了