时间:2021-07-01 10:21:17 帮助过:31人阅读
这个是在百度知道上回答问题时看到的,一时没有做出来,看了一些资料才弄清楚的。 主要有两个点: 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