首页 > 代码库 > 图片转二进制流存储到数据库

图片转二进制流存储到数据库

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 =http://www.mamicode.com/ 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 =http://www.mamicode.com/ id;                    using (SqlDataReader reader = com.ExecuteReader())                    {                        if (reader.Read())                        {                            return (byte[])reader[0];                        }                    }                }            }            return null;        }    }

 

图片转二进制流存储到数据库