winform 二进制图片处理

  SqlConnection conn = new SqlConnection(@"data source=.;uid=sa;pwd=;database=master"); 
                conn.Open(); 
                SqlCommand cmd
= new SqlCommand("insert into image values(@i)", conn); 
               
byte[] ib = new byte[60000]; 
                FileStream fs
= new FileStream(this.openFileDialog1.FileName.ToString(), FileMode.Open, FileAccess.Read); 
                fs.Read(ib,
0, 60000); 
                cmd.Parameters.Add(
"@i", SqlDbType.Image, (int)fs.Length); 
                cmd.Parameters[
"@i"].Value = ib; 
                cmd.ExecuteNonQuery(); 
                conn.Close(); 
                MessageBox.Show(
"保存成功"); 
//显示图片:
              SqlConnection conn = new SqlConnection(@"data source=.;uid=sa;pwd=;database=master"); 
            conn.Open(); 
            SqlCommand cmd
= new SqlCommand("select image1 from image", conn); 
            SqlDataReader reader
= cmd.ExecuteReader(); 
            reader.Read(); 
           
while (reader.Read()) 
            { 
               
for (int i = 0; i  < reader.FieldCount; i++
                { 
                    MemoryStream buf
= new MemoryStream((byte[])reader[i]); 
                    Image image
= Image.FromStream(buf,true); 
                   
this.pictureBox1.Image = image; 
                } 
            } 
 
 
winform下:
        //存储

        private void MemoryImage()
        {
            string sql = "";
            //string conn = "Provider=SQLNCLI;Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";

            Stream ms;
            byte[] picbyte;
            OpenFileDialog fdSelectPic = new OpenFileDialog();
            if (ofdSelectPic.ShowDialog() == DialogResult.OK)
            {
                if ((ms = ofdSelectPic.OpenFile()) != null)
                {
                    picbyte = new byte[ms.Length];
                    ms.Position = 0;
                    ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));

                    //连接数据库
                    SqlConnection conn = new SqlConnection();
                    conn.ConnectionString = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";

                    sql = "Insert into LibraryCover(Cover) values(@UpdateImage)";
                    SqlCommand cmd = new SqlCommand(sql, conn);

                    cmd.Parameters.Add("@UpdateImage", SqlDbType.VarBinary);
                    cmd.Parameters["@UpdateImage"].Value = picbyte;

                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();

                    ms.Close();
                }
            }

            MessageBox.Show("完成!");
        }
        //读取

        private void ShowImage()
        {
            string sql = "";
            sql = "select Cover from LibraryCover where LibID=1";
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";
            SqlCommand cmd = new SqlCommand(sql,conn);
            conn.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            reader.Read();
            MemoryStream ms = new MemoryStream((byte[])reader["Cover"]);
            Image image = Image.FromStream(ms, true);

            reader.Close();
            conn.Close();
            pictureBox1.Image = image;
        }

        //批量存储

        private void button12_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog FBD = new FolderBrowserDialog();
            FBD.ShowDialog();
            DBImages(FBD.SelectedPath);
        }
        /// <summary>
        /// 图片二进制存SQL库
        /// </summary>
        /// <param name="path">图片所在文件夹</param>
        private void DBImages(string path)
        {
            Stream ms;
            string sql = "";
            byte[] picbyte;
            string FolderName = "";
            string[] Folders;
            string connStr = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";
            SqlConnection conn = new SqlConnection(connStr);
            Folders = Directory.GetFiles(path);
            foreach (string folder in Folders)
            {
                if ((ms = File.OpenRead(folder))!= null)
                {
                    picbyte = new byte[ms.Length];
                    ms.Position = 0;
                    ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));

                    sql = "insert into LibraryCover(ImageName,Cover) values(@ImageName,@Cover)";
                    SqlCommand cmd = new SqlCommand(sql, conn);

                    cmd.CommandType = CommandType.Text;
                    FolderName = Path.GetFileNameWithoutExtension(folder);
                    cmd.Parameters.Add("@ImageName", SqlDbType.VarChar, 255).Value = FolderName;
                    cmd.Parameters.Add("@Cover", SqlDbType.VarBinary).Value = picbyte;

                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                    ms.Close();
                }
            }
            MessageBox.Show("存储完成!");
        }

        //批量读取

        private void button13_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog FBD = new FolderBrowserDialog();
            FBD.ShowDialog();
            getImageShow(FBD.SelectedPath);
        }
        /// <summary>
        /// sql库二进制图片显示在存储器上
        /// </summary>
        /// <param name="path">要存储图片的位置</param>
        private void getImageShow(string path)
        {
            string sql = "";
            string conn = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";
            sql = "select ImageName,Cover from LibraryCover order by LibID";
            SqlDataReader sdr = GetList(conn,sql);
            while (sdr.Read())
            {
                byte[] bytes = (byte[])sdr["Cover"];
                FileStream fs = new FileStream(path+@"\" + sdr["ImageName"] + ".jpg", FileMode.Create, FileAccess.Write);
                fs.Write(bytes, 0, bytes.Length);
                fs.Flush();
                fs.Close();
            }
            MessageBox.Show("完成!");
        }
        public SqlDataReader GetList(string conn, string Sql)
        {
            SqlConnection myConnection = new SqlConnection(conn);
            SqlCommand myCommand = new SqlCommand(Sql, myConnection);

            myConnection.Open();
            SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
            return result;
        }

        private void getImage()
        {
            int num = 0;
            string path = @"D:\bookpic";
            Stream ms;
            string sql = "";
            byte[] picbyte;
            FileInfo[] Folders;
            string[] files;
            string FilePath = "";
            string connStr = "Data Source=192.168.0.200,1433;Database=MISTemp;UID=sa;PWD=111122;";
            SqlConnection conn = new SqlConnection(connStr);
            DirectoryInfo DI = new DirectoryInfo(path);
            Folders = DI.GetFiles("*.*",SearchOption.AllDirectories);
            foreach (FileInfo file in Folders)
            {
                num++;
                txt_num.Text = num.ToString();
                FilePath = file.FullName.Replace(@"D:\", "").Replace(@"\","/");
                if ((ms = File.OpenRead(file.FullName)) != null)
                {
                    picbyte = new byte[ms.Length];
                    ms.Position = 0;
                    ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));

                    sql = "update shop_books set Cover=@Cover where bookpic='" + modsql(FilePath) + "'";
                    SqlCommand cmd = new SqlCommand(sql, conn);

                    cmd.CommandType = CommandType.Text;
                    cmd.CommandTimeout = 10000;
                    cmd.Parameters.Add("@Cover", SqlDbType.VarBinary).Value = picbyte;

                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                    ms.Close();
                }
            }
           
            MessageBox.Show("存储完成!");
        }
        public string modsql(string sql)
        {
            return sql.Replace("'", "''");
        }

//Image写入XML
using System.IO;
using System.Runtime.Serialization.Formatters.Soap;

        string MyFile = @"D:\数据处理\image.xml";
        string imageFile = @"G:\zengwei.jpg";
        Stream MyStream;
        SoapFormatter MyFormatter =new SoapFormatter();
        

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                MyStream = new FileStream(MyFile, FileMode.Create, FileAccess.Write, FileShare.None);
                MyFormatter.Serialize(MyStream, pictureBox1.Image);
                MyStream.Close();
                MessageBox.Show("完成!");
            }
            catch (Exception ex)
            {
               
            }
        }
//读取XML显示IMAGE
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                MyStream = new FileStream(MyFile, FileMode.Open, FileAccess.Read, FileShare.None);
                pictureBox1.Image = (Bitmap)MyFormatter.Deserialize(MyStream);
                MyStream.Close();
            }
            catch (Exception ex)
            { }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            pictureBox1.Image = Image.FromFile(imageFile);
        }


你可能感兴趣的:(WinForm)