查看: 735|回复: 0

[SQLServer] C#从SQL server数据库中读取l图片和存入图片

发表于 2018-1-24 08:00:01

一、从图片中获得二进制值的基本方法:Image.Save 方法 (String,?ImageFormat)
这会将保存 Image 写入指定的文件中指定的格式。

命名空间: System.Drawing
程序集: System.Drawing(位于 System.Drawing.dll)

语法:
public void Save( string filename, ImageFormat format)
参数
filename
Type: System.String
一个字符串,包含要保存此文件的名称 Image。

format
Type: System.Drawing.Imaging.ImageFormat
用于此 ImageFormat 的 Image。(包括.JGP、png等格式)

异常

ArgumentNullException: filename 或 format 是 null.

ExternalException: 使用错误的图像格式保存图像。- 或 - 图像已保存到同一文件从创建它。

二、Bitmap.Save 方法
命名空間: System.Drawing
組件: System.Drawing (於 System.Drawing.dll)

多載清單:
1、Save(Stream,?ImageCodecInfo,?EncoderParameters) :使用指定的編碼器和影像編碼器參數,將此影像儲存至指定的資料流。(繼承自 Image。)
2、Save(Stream,?ImageFormat) 將這個影像以指定的格式儲存至指定的資料流。(繼承自 Image。)
3、Save(String) 這會將儲存 Image 到指定的檔案或資料流。(繼承自 Image。)
4、Save(String,?ImageCodecInfo,?EncoderParameters) 這會將儲存 Image 至指定的檔案,以指定的編碼器和影像編碼器參數。(繼承自 Image。)
5、Save(String,?ImageFormat) 這會將儲存 Image 至指定的檔案中指定的格式。(繼承自 Image。)

三、将图片保存在数据库和从数据库中还原程序的示例:

//存图片
private void button1_Click(object sender, EventArgs e)
{
#region //从文件中读取图片
FileStream fs = new FileStream(@"D:\i\2017年资料\SPC\SPC\30.jpg", FileMode.Open, FileAccess.Read);
byte[] imagebytes = new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));
SqlConnection mycn = new SqlConnection("server=192.168.1.14;database=fengyp;uid=sa;pwd=");
mycn.Open();
SqlCommand com = new SqlCommand("insert into dbo.试验图片存取 values(10,@ImageList)", mycn);

  1. com.Parameters.Add("ImageList", SqlDbType.Image);
  2. com.Parameters["ImageList"].Value = imagebytes;
  3. com.ExecuteNonQuery();
  4. mycn.Close();
  5. #endregion
  6. #region //从picturebox中读取图片
  7. //将Image转换成流数据,并保存为byte[]
  8. MemoryStream mstream = new MemoryStream();
  9. pictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
  10. byte[] bytes = new Byte[mstream.Length];
  11. mstream.Position = 0;
  12. mstream.Read(bytes, 0, bytes.Length);
  13. mstream.Close();
  14. SqlConnection mycn = new SqlConnection("server=192.168.1.14;database=fengyp;uid=sa;pwd=");
  15. mycn.Open();
复制代码

SqlCommand com = new SqlCommand("insert into dbo.试验图片存取 values(11,@ImageList)", mycn);

  1. com.Parameters.Add("ImageList", SqlDbType.Image);
  2. com.Parameters["ImageList"].Value = bytes;
  3. com.ExecuteNonQuery();
  4. mycn.Close();
  5. #endregion
  6. }
  7. //从数据库读取图片并还原
  8. private void button2_Click(object sender, EventArgs e)
  9. {
  10. byte[] imagebytes = null;
  11. //打开数据库
  12. SqlConnection con = new SqlConnection("server=192.168.1.14;database=fengyp;uid=sa;pwd=");
  13. con.Open();
  14. SqlCommand com = new SqlCommand("select 图片 from dbo.试验图片存取 where 序号=10", con);
  15. SqlDataReader dr = com.ExecuteReader();
  16. while (dr.Read())
  17. {
  18. imagebytes = (byte[])dr.GetValue(0);
  19. }
  20. dr.Close();
  21. com.Clone();
  22. con.Close();
  23. MemoryStream ms = new MemoryStream(imagebytes);
  24. Bitmap bmpt = new Bitmap(ms);
  25. pictureBox2.Image = bmpt;
  26. }
复制代码


回复

使用道具 举报