这个是在百度知道上回答问题时看到的,一时没有做出来,看了一些资料才弄清楚的。 主要有两个点: 1.对流的操作不熟悉,不知道图片Image对象是可以”保存“到MemoryStream中的; image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg); 2.二进制数
这个是在百度知道上回答问题时看到的,一时没有做出来,看了一些资料才弄清楚的。
主要有两个点:
1.对流的操作不熟悉,不知道图片Image对象是可以”保存“到MemoryStream中的;
image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
2.二进制数据插入到数据库的操作不清楚。
SqlParameter param = new SqlParameter("ImgData", SqlDbType.VarBinary, imageBytes.Length); param.Value = imageBytes; cmd.Parameters.Add(param);
下面贴上代码
private void button1_Click(object sender, EventArgs e) { byte[] imageBytes = GetImageBytes(pictureBox1.Image); string connStr = "SQL Server连接字符串"; using (SqlConnection conn = new SqlConnection(connStr)) { string sql = "Insert Into T_Img Values (@ImgData) "; using (SqlCommand cmd = new SqlCommand(sql)) { SqlParameter param = new SqlParameter("ImgData", SqlDbType.VarBinary, imageBytes.Length); param.Value = imageBytes; cmd.Parameters.Add(param); cmd.Connection = conn; conn.Open(); int i = cmd.ExecuteNonQuery(); MessageBox.Show(i.ToString()); } } } private byte[] GetImageBytes(Image image) { MemoryStream mstream = new MemoryStream(); image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] byteData = new Byte[mstream.Length]; mstream.Position = 0; mstream.Read(byteData, 0, byteData.Length); mstream.Close(); return byteData; }
上传了源代码:http://download.csdn.net/detail/frombegintoend/4403728