C#怎样读取数据库中的图片?(看清说明再回答!)

2024-11-18 14:27:41
推荐回答(5个)
回答(1):

这个我做过,流程就是首先新建一个页面用于输出图像,将数据库中的二进制数据流读取到字节数组中,再定义基于字节数组的内存流,再定义图片对象,从内存流中生成图片,输出到一个新建页面上,在需要的页面上,定义image控件,imageurl就指向这个页面,当然了,得传一个参数,就是你要查询的条件啊,这样这个页面才会动态的输出不同的图片。
以下是读取图片的代码:
///


/// 显示图片
///

///
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);
}

回答(2):

个人感觉,从数据库里面读写image格式的图片会很耗时间,很耗性能.而且编码的时候也容易出错.

LZ何不考虑一下,换个方法来读图片呢?如果数据库里面有超过100万张的图片要批量读出来,这样的方式会很耗性能的.

我的建议是,直接把服务器上的图片文件夹的路径存储的数据库里,这样字节也小,性能开销也小.

都是用picturebox绑定的..这样就能最大限度的利用资源来显示图片勒.picturebox图片的绑定不就要是要一个source么.

回答(3):

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");

回答(4):

你从数据库里面读出来的图片是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");

回答(5):

喜欢 [回答者: zhenshui007 - 经理 五级] 的答案