你的位置:首页 > ASP.net教程

[ASP.net教程]图片转二进制流存储到数据库


1.数据库名为Demo,数据结构如图

2.后台代码如下

 class Program  {    public static readonly string conStr = "Data Source = .;Initial Catalog = Demo;Integrated Security = SSPI;";    static void Main(string[] args)    {      #region 图片转为二进制流写进数据库      byte[] buffer = ImageToByte(@"G:\2.jpg");      if (PushDataBase(buffer) > 0)      {        Console.WriteLine("OK");        Console.Read();      }      #endregion      #region 二进制流转图片      //byte[] gBuffer = GetDataBase(3);      //ByteToImage(gBuffer);      //Console.WriteLine("OK");      //Console.Read();      #endregion    }    /// <summary>    /// 图片转二进制流    /// </summary>    /// <param name="imgPath">图片路径</param>    /// <returns></returns>    public static byte[] ImageToByte(string imgPath)    {      Image image = Image.FromFile(imgPath);           using (MemoryStream ms = new MemoryStream())      {        image.Save(ms, image.RawFormat);        byte[] buffer = new byte[ms.Length];        ms.Seek(0, SeekOrigin.Begin);        ms.Read(buffer, 0, buffer.Length);        return buffer;      }    }    /// <summary>    /// 字节流转图片    /// </summary>    /// <param name="buffer">图片二进制流</param>    public static void ByteToImage(byte[] buffer)    {      MemoryStream ms = new MemoryStream();      ms.Write(buffer, 0, buffer.Length);      Image img = Image.FromStream(ms);      string file = "mypicture2";      if (img.RawFormat == ImageFormat.Jpeg)      {        file += ".jpg";      }      else if (img.RawFormat == ImageFormat.Png)      {        file += ".png";      }      else      {        file += ".jpg";      }      File.WriteAllBytes(file, buffer);    }    /// <summary>    /// 写进数据库    /// </summary>    /// <param name="buffer">图片二进制流</param>    /// <returns></returns>    public static int PushDataBase(byte[] buffer)    {      using (SqlConnection conn = new SqlConnection(conStr))      {        using (SqlCommand com = new SqlCommand())        {          com.Connection = conn;          conn.Open();          com.CommandText = "insert into ImageData values(@image)";          com.Parameters.Add("@image", SqlDbType.Image).Value = buffer;          return com.ExecuteNonQuery();        }      }    }    /// <summary>    /// 从数据库中读取    /// </summary>    /// <returns></returns>    public static byte[] GetDataBase(int id)    {      using (SqlConnection conn = new SqlConnection(conStr))      {        using (SqlCommand com = new SqlCommand())        {          com.Connection = conn;          conn.Open();          com.CommandText = "select ImageByte from ImageData where Id=@id";          com.Parameters.Add("@id", SqlDbType.Int).Value = id;          using (SqlDataReader reader = com.ExecuteReader())          {            if (reader.Read())            {              return (byte[])reader[0];            }          }        }      }      return null;    }  }