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

 将Image对象和byte[]互相转换
//需要引入的命名空间
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[]转换为Image
public 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();
}


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=258787 

 

          //前题 在数据库中 [照片] column 为image类型

            DataTable dt = mySet.Tables[0];
            DataRow dr = dt.NewRow();
            dr["用户姓名"] = "自在游";
            ImageConverter im = new ImageConverter();

           //pictureBox1.Image 已经存有图片
            byte[] buffer = (byte[])im.ConvertTo(pictureBox1.Image, typeof(byte[]));
            dr["照片"] = buffer;
            dt.Rows.Add(dr);
            myAda.Update(dt.GetChanges());
            dt.AcceptChanges(); 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1476778

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值