C#怎样读取数据库中的图片?(看清说明再回答!)
注意:我的数据库是SQL2005图片储存格式image,B/S模式,用的是image控件显示图片,所以别跟我讲picturebox,B/S是没有picturebox的.我...
注意:我的数据库是SQL2005图片储存格式image,B/S模式,用的是image控件显示图片,所以别跟我讲picturebox,B/S是没有picturebox的.
我现在已经将图片成功保存进数据库了(二进制数据),我想从数据库读取出来的时候,把图片先保存到本地,在本地建一个临时目录,然后再从这个临时目录把图片读取出来显示在image控件上面.求读取图片,保存到本地,显示的代码,保存的代码不用了.自己测试能用的就回答,网上的我基本都看过,不能用.请贴出完整的代码.. 展开
我现在已经将图片成功保存进数据库了(二进制数据),我想从数据库读取出来的时候,把图片先保存到本地,在本地建一个临时目录,然后再从这个临时目录把图片读取出来显示在image控件上面.求读取图片,保存到本地,显示的代码,保存的代码不用了.自己测试能用的就回答,网上的我基本都看过,不能用.请贴出完整的代码.. 展开
5个回答
展开全部
这个我做过,流程就是首先新建一个页面用于输出图像,将数据库中的二进制数据流读取到字节数组中,再定义基于字节数组的内存流,再定义图片对象,从内存流中生成图片,输出到一个新建页面上,在需要的页面上,定义image控件,imageurl就指向这个页面,当然了,得传一个参数,就是你要查询的条件啊,这样这个页面才会动态的输出不同的图片。
以下是读取图片的代码:
/// <summary>
/// 显示图片
/// </summary>
/// <param name="sql"></param>
protected void LoadImage(string sql)
{
DataOperate dt = new DataOperate();//操作类的实例
SqlConnection Conn = dt.GetConn();
Conn.Open();
SqlCommand cmd = new SqlCommand(sql, Conn);
byte[] fileData = (byte[])cmd.ExecuteScalar();
Conn.Close();
System.IO.MemoryStream ms = new System.IO.MemoryStream(fileData);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
以下是读取图片的代码:
/// <summary>
/// 显示图片
/// </summary>
/// <param name="sql"></param>
protected void LoadImage(string sql)
{
DataOperate dt = new DataOperate();//操作类的实例
SqlConnection Conn = dt.GetConn();
Conn.Open();
SqlCommand cmd = new SqlCommand(sql, Conn);
byte[] fileData = (byte[])cmd.ExecuteScalar();
Conn.Close();
System.IO.MemoryStream ms = new System.IO.MemoryStream(fileData);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
展开全部
个人感觉,从数据库里面读写image格式的图片会很耗时间,很耗性能.而且编码的时候也容易出错.
LZ何不考虑一下,换个方法来读图片呢?如果数据库里面有超过100万张的图片要批量读出来,这样的方式会很耗性能的.
我的建议是,直接把服务器上的图片文件夹的路径存储的数据库里,这样字节也小,性能开销也小.
都是用picturebox绑定的..这样就能最大限度的利用资源来显示图片勒.picturebox图片的绑定不就要是要一个source么.
LZ何不考虑一下,换个方法来读图片呢?如果数据库里面有超过100万张的图片要批量读出来,这样的方式会很耗性能的.
我的建议是,直接把服务器上的图片文件夹的路径存储的数据库里,这样字节也小,性能开销也小.
都是用picturebox绑定的..这样就能最大限度的利用资源来显示图片勒.picturebox图片的绑定不就要是要一个source么.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
http://skyrickie.blog.163.com/blog/static/2353329200957112510123/edit/
给你一个我在Winform上做的例子,如果保存到本地的话下面一段代码替换掉
byte[] images = (byte[])sqldr["myimage"];
Stream stream = new MemoryStream(images);
System.Drawing.Image.FromStream(stream).Save(@"d:\test.img");
给你一个我在Winform上做的例子,如果保存到本地的话下面一段代码替换掉
byte[] images = (byte[])sqldr["myimage"];
Stream stream = new MemoryStream(images);
System.Drawing.Image.FromStream(stream).Save(@"d:\test.img");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你从数据库里面读出来的图片是byte[]数组把?可以参考一下我的。我没验证对不对
byte[] buffer;//数据库读出来的byte数组
System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms);
image.Save("d:\\1.jpg");
byte[] buffer;//数据库读出来的byte数组
System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms);
image.Save("d:\\1.jpg");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
喜欢 [回答者: zhenshui007 - 经理 五级] 的答案
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询