当前位置:Gxlcms > mysql > PictureBox中的Image对象转存到数据库

PictureBox中的Image对象转存到数据库

时间:2021-07-01 10:21:17 帮助过:31人阅读

这个是在百度知道上回答问题时看到的,一时没有做出来,看了一些资料才弄清楚的。 主要有两个点: 1.对流的操作不熟悉,不知道图片Image对象是可以”保存“到MemoryStream中的; image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg); 2.二进制数

这个是在百度知道上回答问题时看到的,一时没有做出来,看了一些资料才弄清楚的。

主要有两个点:

1.对流的操作不熟悉,不知道图片Image对象是可以”保存“到MemoryStream中的;

  1. image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);

2.二进制数据插入到数据库的操作不清楚。

  1. SqlParameter param = new SqlParameter("ImgData", SqlDbType.VarBinary, imageBytes.Length);
  2. param.Value = imageBytes;
  3. cmd.Parameters.Add(param);

下面贴上代码

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. byte[] imageBytes = GetImageBytes(pictureBox1.Image);
  4. string connStr = "SQL Server连接字符串";
  5. using (SqlConnection conn = new SqlConnection(connStr))
  6. {
  7. string sql = "Insert Into T_Img Values (@ImgData) ";
  8. using (SqlCommand cmd = new SqlCommand(sql))
  9. {
  10. SqlParameter param = new SqlParameter("ImgData", SqlDbType.VarBinary, imageBytes.Length);
  11. param.Value = imageBytes;
  12. cmd.Parameters.Add(param);
  13. cmd.Connection = conn;
  14. conn.Open();
  15. int i = cmd.ExecuteNonQuery();
  16. MessageBox.Show(i.ToString());
  17. }
  18. }
  19. }
  20. private byte[] GetImageBytes(Image image)
  21. {
  22. MemoryStream mstream = new MemoryStream();
  23. image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
  24. byte[] byteData = new Byte[mstream.Length];
  25. mstream.Position = 0;
  26. mstream.Read(byteData, 0, byteData.Length);
  27. mstream.Close();
  28. return byteData;
  29. }

上传了源代码:http://download.csdn.net/detail/frombegintoend/4403728

人气教程排行