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


    一、从图片中获得二进制值的基本方法: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:i2017年资料SPCSPC30.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);

            com.Parameters.Add("ImageList", SqlDbType.Image);
    
            com.Parameters["ImageList"].Value = imagebytes;
    
            com.ExecuteNonQuery();
    
            mycn.Close();
                         #endregion
    
                        #region   //从picturebox中读取图片 
                         //将Image转换成流数据,并保存为byte[] 
            MemoryStream mstream = new MemoryStream();
            pictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] bytes = new Byte[mstream.Length];
            mstream.Position = 0;
            mstream.Read(bytes, 0, bytes.Length);
            mstream.Close();
                        SqlConnection mycn = new   SqlConnection("server=192.168.1.14;database=fengyp;uid=sa;pwd=");
            mycn.Open();

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

            com.Parameters.Add("ImageList", SqlDbType.Image);
    
            com.Parameters["ImageList"].Value = bytes;
    
            com.ExecuteNonQuery();
    
            mycn.Close();
                        #endregion
    
                        }
        //从数据库读取图片并还原
        private void button2_Click(object sender, EventArgs e)
    
        {
    
            byte[] imagebytes = null;
    
            //打开数据库
    
            SqlConnection con = new SqlConnection("server=192.168.1.14;database=fengyp;uid=sa;pwd=");
    
            con.Open();
    
            SqlCommand com = new SqlCommand("select 图片 from dbo.试验图片存取 where 序号=10", con);
    
            SqlDataReader dr = com.ExecuteReader();
    
            while (dr.Read())
            {
    
                imagebytes = (byte[])dr.GetValue(0);
    
            }
    
            dr.Close();
    
            com.Clone();
    
            con.Close();
    
            MemoryStream ms = new MemoryStream(imagebytes);
    
            Bitmap bmpt = new Bitmap(ms);
    
            pictureBox2.Image = bmpt;
                         }

    转载于:https://blog.51cto.com/fengyp/2046729

  • 相关阅读:
    [时间篇TIME]Learn with whole Life 一生的学习
    使用IIS内置压缩功能,增加网站访问速度
    CSS中A链接样式的 "爱恨"原则
    爱情六十三课,定个开放日
    给爱子的信
    在IE中使用高级CSS3选择器
    爱情六十七课,下台阶的学问
    网上常用免费WebServices集合
    美国狗证上的10句话
    爱情六十五课,情爱无智者
  • 原文地址:https://www.cnblogs.com/twodog/p/12138058.html
Copyright © 2020-2023  润新知