日期:2014-05-17  浏览次数:21092 次

Image转Stream转Byte[],Byte[]转Stream转Image,参数无效
rt。
C# code

void Fun(Image image)
{
               MemoryStream ms = new MemoryStream();
               image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
               bytes = StreamToBytes(ms);
               Stream ms2 = BytesToStream(bytes);
                if (Form == null)
               {
                   Form = new Form2();
                   Form.pictureBox1.Image = Image.FromStream(ms2);//参数无效
                   Form.ShowDialog();
               }
}
 private byte[] StreamToBytes(Stream stream)
        { 
            byte[] bytes=new byte[stream.Length];
            stream.Read(bytes, 0,bytes.Length);
            stream.Seek(0, SeekOrigin.Begin);
            return bytes;
        }
 private Stream BytesToStream(byte[] bytes)
        {
            Stream stream = new MemoryStream(bytes);
            return stream;
        }



------解决方案--------------------
在我的印象中 貌似 可以直接 byte[] byTest = ms.ToArray()
------解决方案--------------------
在StreamToBytes方法中
stream.Seek(0, SeekOrigin.Begin);
stream.Read(bytes, 0,bytes.Length);
这两句代码的位置颠倒一下位置。
image.Save()后,Stream流中的位置在末尾,先把位置移到开始在读取,否则你读取到一个空。


用LS说的这个方法也可以:
byte[] byTest = ms.ToArray()