C# byte[]与Image的相互转换

http://topic.csdn.net/u/20091026/14/6eaa6466-405f-4f83-bb5f-e1d84e959248.html

针对帖子的问题,总结了下,方便后面的工作

 

问题代码:

private byte[] convertByte(Image img) { MemoryStream ms = new MemoryStream(); img.Save(ms, img.RawFormat); byte[] bytes = new byte[ms.Length]; ms.Read(bytes, 0, Convert.ToInt32(ms.Length)); return bytes; } private Image convertImg(byte[] datas) { MemoryStream ms = new MemoryStream(datas); Image img = Image.FromStream(ms, true);//在这里出错 return img; }

存在的问题:将byte[]转换成图片时总是出错,错误为参数无效,可能存在空值转换

 

修改后的代码:

private byte[] convertByte(Image img) { MemoryStream ms = new MemoryStream(); img.Save(ms, img.RawFormat); //byte[] bytes = new byte[ms.Length]; //ms.Read(bytes, 0, Convert.ToInt32(ms.Length)); //以上两句改成下面两句 byte[] bytes = ms.ToArray(); ms.Close(); return bytes; } private Image convertImg(byte[] datas) { MemoryStream ms = new MemoryStream(datas); Image img = Image.FromStream(ms, true);//在这里出错 //流用完要及时关闭 ms.Close(); return img; }

 

附:         img.Save(ms, img.RawFormat);
             下面加一行
             ms.Position = 0;
             将流的位置置到开始处。
             Image.Save方法会将流置到末尾,所以导致读取不到数据。

 

你可能感兴趣的:(C#)