图片转二进制流存储到数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片转二进制流存储到数据库相关的知识,希望对你有一定的参考价值。
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 [email protected]"; com.Parameters.Add("@id", SqlDbType.Int).Value = id; using (SqlDataReader reader = com.ExecuteReader()) { if (reader.Read()) { return (byte[])reader[0]; } } } } return null; } }
以上是关于图片转二进制流存储到数据库的主要内容,如果未能解决你的问题,请参考以下文章
java web二进制流的图片如何用response返回给前台