WPF——图片的预览,以流的方式将图片保存在数据库中,再以流的方式从数据库中读取显示图片

发布时间:2016-12-6 20:07:49 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"WPF——图片的预览,以流的方式将图片保存在数据库中,再以流的方式从数据库中读取显示图片",主要涉及到WPF——图片的预览,以流的方式将图片保存在数据库中,再以流的方式从数据库中读取显示图片方面的内容,对于WPF——图片的预览,以流的方式将图片保存在数据库中,再以流的方式从数据库中读取显示图片感兴趣的同学可以参考一下。

【注:数据库中保存图片的数据类型最好是varbiary(max)】 1.图片预览功能:  private void btn_preview_Click(object sender, RoutedEventArgs e)         {             OpenFileDialog openfiledialog = new OpenFileDialog();             openfiledialog.Filter = "图片(*.jpg;*.png;*.gif;*.bmp;*.jpeg)|*.jpg;*.png;*.gif;*.bmp;*.jpeg";             if ((bool)openfiledialog.ShowDialog())             {                 BitmapImage bitmapimg = new BitmapImage(new Uri(openfiledialog.FileName));                 image1.Source = bitmapimg;                 //image1.Width = bitmapimg.Width;                 //image1.Height = bitmapimg.Height;                 this.tb_selPic.Text = openfiledialog.FileName;             }         } 2.以流的方式将图片保存在数据库  private void btn_add_Click(object sender, RoutedEventArgs e)         {             if (!string.IsNullOrEmpty(this.tb_selPic.Text))             {                 byte[] img = File.ReadAllBytes(this.tb_selPic.Text);                         //将图片装换为字节,存储在数据库中                 MyJobs myJobs = new MyJobs                 {                     Job_desc = this.tb_jobdesc.Text,                     Pic = img,                 };                 List<SqlParameter> sqlPar = new List<SqlParameter>                 {                     new SqlParameter("@job_desc",myJobs.Job_desc),                     new SqlParameter("@pic",myJobs.Pic),                 };                 string msg = DBHelper.DBSQLHelper.Execute("proc_myjobs", sqlPar, System.Data.CommandType.StoredProcedure) > 0 ? "添加成功!":"添加失败!";                 MessageBox.Show(msg);                            }             else             {                 MessageBox.Show("请选择图片!");             }         } 3.从数据库中读取以流的方式显示  private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)         {             if ((e.OriginalSource as DataGrid).SelectedItem != null)             {                 int job_id = Convert.ToInt32(((e.OriginalSource as DataGrid).SelectedItem as DataRowView)[0].ToString());                 DataSet ds = DBHelper.DBSQLHelper.Search("select * from myjobs where job_id=" + job_id, null, CommandType.Text);                 this.tb_jobdesc.Text = ds.Tables[0].Rows[0]["job_desc"].ToString();                 byte[] img = (byte[])ds.Tables[0].Rows[0]["pic"];    //从数据库中获取图片数据转换为字节数组(注意:不用用这种方式转换为字节数组,这种转换有问题,我之前一直出不来效果 byte[] img = System.Text.ASCIIEncoding.ASCII.GetBytes(ds.Tables[0].Rows[0]["pic"].ToString()); 现在修改了,就能出来效果了,这个问题还挺让人纠结的呢,所以大家要注意哦!)                 ShowSelectedIMG(img);                //以流的方式显示图片的方法             }         }         private void ShowSelectedIMG(byte[] img)         {             System.IO.MemoryStream ms = new System.IO.MemoryStream(img);//img是从数据库中读取出来的字节数组             ms.Seek(0, System.IO.SeekOrigin.Begin);                          BitmapImage newBitmapImage = new BitmapImage();             newBitmapImage.BeginInit();             newBitmapImage.StreamSource = ms;             newBitmapImage.EndInit();             image1.Source = newBitmapImage;         }

上一篇:13条创业公司不应忽视的用户体验设计准则
下一篇:微信的研究

相关文章

相关评论