将Image对象和byte[]互相转换

来源:互联网 发布:淘宝鞋主页设计图片 编辑:程序博客网 时间:2024/04/29 01:03

/需要引入的命名空间using System;using System.IO;using System.Drawing;using System.Runtime.Serialization.Formatters.Binary; //引入供序列化Image对象使用//以下为转换方法//将Image转换为byte[]public byte[] ConvertImage(Image image){     FileStream fs=new FileStream("imagetemp",FileMode.Create,FileAccess.Write,FileShare.None);     BinaryFormatter bf = new BinaryFormatter();     bf.Serialize(fs,(object)image);      fs.Close();     fs=new FileStream("imagetemp",FileMode.Open,FileAccess.Read,FileShare.None);     byte[] bytes = new byte[fs.Length];     fs.Read(bytes,0,(int)fs.Length);     fs.Close();     return bytes;}//将byte[]转换为Imagepublic Image ReadImage(byte[] bytes){  FileStream fs=new FileStream("imagetemp1",FileMode.Create,FileAccess.Write,FileShare.None);  foreach(byte a in bytes)   {     fs.WriteByte(a);   }     fs.Close();     fs=new FileStream("imagetemp1",FileMode.Open,FileAccess.Read,FileShare.None);     BinaryFormatter bf = new BinaryFormatter();     object obj=bf.Deserialize(fs);     fs.Close();   return (Image)obj;}搞到三点多,终于行了,5555,终于可以睡觉咧!!!第一次玩文件流,感觉很模糊,希望有高手能帮偶优化精简一下,感激不尽!!!/////今天早上重新看了一下,对此做出第一次修改,如下:/// <summary>/// 将byte[]转换为Image/// </summary>/// <param name="bytes">字节数组</param>/// <returns>Image</returns>public Image ReadImage(byte[] bytes){     MemoryStream ms=new MemoryStream(bytes,0,bytes.Length);     BinaryFormatter bf = new BinaryFormatter();     object obj=bf.Deserialize(ms);     ms.Close();   return (Image)obj;}/// <summary>/// 将Image转换为byte[]/// </summary>/// <param name="image">Image</param>/// <returns>byte[]</returns>public byte[] ConvertImage(Image image){     MemoryStream ms=new MemoryStream();     BinaryFormatter bf = new BinaryFormatter();     bf.Serialize(ms,(object)image);      ms.Close();     return ms.ToArray();}
http://blog.csdn.net/freehul/article/details/258787