将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