WPF——图片的预览,以流的方式将图片保存在数据库中,再以流的方式从数据库中读取显示图片
来源:互联网 发布:icmp 用的端口 编辑:程序博客网 时间:2024/05/19 08:26
【注:数据库中保存图片的数据类型最好是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;
}
}
{
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("请选择图片!");
}
}
{
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); //以流的方式显示图片的方法
}
}
{
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是从数据库中读取出来的字节数组
{
System.IO.MemoryStream ms = new System.IO.MemoryStream(img);//img是从数据库中读取出来的字节数组
ms.Seek(0, System.IO.SeekOrigin.Begin);
BitmapImage newBitmapImage = new BitmapImage();
BitmapImage newBitmapImage = new BitmapImage();
newBitmapImage.BeginInit();
newBitmapImage.StreamSource = ms;
newBitmapImage.EndInit();
image1.Source = newBitmapImage;
}
}
- WPF——图片的预览,以流的方式将图片保存在数据库中,再以流的方式从数据库中读取显示图片
- WPF——图片的预览,以流的方式将图片保存在数据库中,再以流的方式从数据库中读取显示图片
- Flex上传图片,将图片保存以二进制流的方式保存到数据库。
- Access中以文字方式保存文件名的图片如何在报表中预览?
- Access中以文字方式保存文件名的图片如何在报表中预览
- 将图片以二进制格式存入数据库,并以流的方式展现在jsp页面
- 以缩略图方式在网页中显示数据库中的图片
- WPF用流的方式上传/显示/下载图片文件(保存在数据库)
- 从Oracle中数据库中读取以Blob类型存储的图片显示在jsp页面中
- 将图片以二进制流保存到数据库中
- WinForm把图片以二进制的方式存入到数据库,并将存入数据库的二进制图片读出显示到PictureBox中
- asp.net(c#)实现从sql数据库中下载以二进制方式存储的图片
- 将图片以二进制保存在数据中并显示图片的信息
- 如何显示数据库中以 OLE 对象方式存储的 JPEG 图片
- 如何显示数据库中以 OLE 对象方式存储的 JPEG 图片
- [输出流]将图片以流的方式读取并显示
- 以流的方式在html页面上显示图片
- php将图片保存到mysql数据库及从数据库中读取图片的方法源码
- poj 1659 Frogs' Neighborhood (贪心 + 判断度数序列是否可图)
- (Domino)Unable to gain exclusive access to mail drop的报错
- oracle 列转行 LISTAGG和WM_CONCAT .
- poj 1789 Truck History
- Android电话系统之-rild
- WPF——图片的预览,以流的方式将图片保存在数据库中,再以流的方式从数据库中读取显示图片
- Windows server2003下搭建openmeetings2
- 新的移动服务示例
- oracle中左关联,右关联区别
- HTTP请求返回状态码
- Xcode调试技巧
- Android RIL-Java
- 常用命令行
- Block对象