问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Sqlserver数据库存储的图片格式(二进制数据)怎么显示到页面?

发布网友 发布时间:2022-05-01 00:58

我来回答

3个回答

热心网友 时间:2022-04-09 17:50

1.将图片以二进制存入数据库
//保存图片到数据库
protected void Button1_Click(object sender, EventArgs e)
{
//图片路径
string strPath = "~/photo/03.JPG";
string strPhotoPath = Server.MapPath(strPath);
//读取图片
FileStream fs = new System.IO.FileStream(strPhotoPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
//存入
SqlConnection myConn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
string strComm = " INSERT INTO personPhoto(personName, personPhotoPath, personPhoto) ";
strComm += " VALUES('wangwu', '" + strPath + "', @photoBinary )";
SqlCommand myComm = new SqlCommand(strComm, myConn);
myComm.Parameters.Add("@photoBinary", SqlDbType.Binary,photo.Length);
myComm.Parameters["@photoBinary"].Value = photo;
myConn.Open();
myComm.ExecuteNonQuery();
myConn.Close();
}
2.读取二进制图片在页面显示
//读取图片
SqlConnection myConn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
string strComm = " SELECT personPhoto FROM personPhoto WHERE personName='wangwu' ";
SqlCommand myComm = new SqlCommand(strComm, myConn);
myConn.Open();
SqlDataReader dr = myComm.ExecuteReader();
while (dr.Read())
{
byte[] photo = (byte[])dr["personPhoto"];
this.Response.BinaryWrite(photo);
}
dr.Close();
myConn.Close();

SqlConnection myConn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
SqlDataAdapter myda = new SqlDataAdapter(" SELECT personPhoto FROM personPhoto WHERE personName='11' ", myConn);
DataSet myds = new DataSet();
myConn.Open();
myda.Fill(myds);
myConn.Close();
byte[] photo = (byte[])myds.Tables[0].Rows[0]["personPhoto"];
this.Response.BinaryWrite(photo);
3.设置Image控件显示从数据库中读出的二进制图片
---------------------------------------------
SqlConnection myConn = new SqlConnection("Data Source=192.168.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
SqlDataAdapter myda = new SqlDataAdapter(" SELECT personPhoto FROM personPhoto WHERE personName='11' ", myConn);
DataSet myds = new DataSet();
myConn.Open();
myda.Fill(myds);
myConn.Close();
byte[] photo = (byte[])myds.Tables[0].Rows[0]["personPhoto"];
//图片路径
string strPath = "~/photo/wangwu.JPG";
string strPhotoPath = Server.MapPath(strPath);
//保存图片文件
BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate));
bw.Write(photo);
bw.Close();
3.显示图片
this.Image1.ImageUrl = strPath;
4.GridView中ImageField以URL方式显示图片
--------------------------
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="personName" HeaderText="姓名" />
<asp:ImageField DataImageUrlField="personPhotoPath"
HeaderText="图片">
</asp:ImageField>
</Columns>
</asp:GridView>
5.GridView显示读出的二进制图片
//样板列
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="personName" HeaderText="姓名" />
<asp:ImageField DataImageUrlField="personPhotoPath"
HeaderText="图片">
</asp:ImageField>
<asp:TemplateField HeaderText="图片">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex < 0)
return;
// System.ComponentModel.Container
string strPersonName = (string)DataBinder.Eval(e.Row.DataItem, "personName");
Image tmp_Image = (Image)e.Row.Cells[2].FindControl("Image1");
if (!System.Convert.IsDBNull(DataBinder.Eval(e.Row.DataItem, "personPhoto")))
{
//
byte[] photo = (byte[])DataBinder.Eval(e.Row.DataItem, "personPhoto");
//图片路径
string strPath = "~/photo/" + strPersonName.Trim() + ".JPG";
string strPhotoPath = Server.MapPath(strPath);
//保存图片文件
BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath, FileMode.OpenOrCreate));
bw.Write(photo);
bw.Close();
//显示图片
tmp_Image.ImageUrl = strPath;
}
}

热心网友 时间:2022-04-09 19:08

//读取byte[]没问题吧
byte[] bytes = 数据库中的img数据;
MemoryStream ms = new MemoryStream(bytes);  
Image img = Image.FromStream(ms,true);  
//显示(1.如果你是webForm那么麻烦一些。需要你读取这个img,然后保存在一个地方。通过url的形式显示;2.如果你是winForm,用pictureBox控件可以直接显示pictureBox.Image=img)

热心网友 时间:2022-04-09 20:42

DBimage控件就可以了追问我说的是在.net,貌似没有这个控件

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
NBA下赛季常规赛MVP和总决赛MVP会是谁 吴前当选CBA常规赛MVP,他是实至名归吗? 如何申请安电表 如何申请独立电表 用电量大可以增加电表吗 出租他人铺面,原先房东已经安装过电表,因为用电量大,我想自己装电表可以... 梦见有个老人送佛画给我、让我在家供佛 ...分之一米还剩多少米如果截去四分之一还剩几分之几还剩多少米?_百度... 一根竹竿长四米,截去它的四分之三后,这根竹竿还剩全长的几分之几? ...这根绳子的几分之几后还剩下他的3/1,用去了( )m,还剩下( )_百度知... 孔子编《易传》的目的,究竟是什么? 图片都是以数据流的形式存储在数据库中的,如何读取到页面上 周易,易经,易传,易,有什么区别? 怎样将图片存储路径的形式存入Access数据库,并显示在ASP网页中。 《易经》和《易传》有什么区别 数据库存储图片 计算机中储存的文字图形图像等是不是都是被数字化的并以文件形式存放的数据 如何将图片存储Accesso数据库中 SQLServer存储二进制图片用什么类型 图片以二进制形式保存在数据库中和保存路径相比,在安全性方面有哪些优势? 我国第二个百年目标是什么? 逗号部分算不算一句话 逗号的用法 在一句话里 啊后面可不可以用逗号? 小米手机每天在设备上有一个小米账号登录微信是怎么回事 在语文修改病句儿中逗号,是一句话还是句号是一句话怎么看主语呀,是逗号一个主语,还是一个句号一个主语 精神不好,容易疲劳是什么原因 精神不好是什么原因 每天感觉很累,精神不好是什么原因? 精神不好的人是什么?眼睛没什么精神的人怎么办?是不够睡还是 精神病的俗称是叫疯子吗?是什么原因造成的?是问题想多了造成的吗 将上传图片以二进制流形式保存在数据库里有什么好处呢??? &lt;易经&gt;和&lt;易传&gt;有什么区别? 《周易》分为经和传,经和传分别是指什么? 子夏易传与易经的区别 求助简析易经和易传的构成 在你眼中,你觉得什么样的人才算是人生赢家? 人生赢家的标准是什么? 怎样才算是人生赢家? 什么样才是人生赢家? 什么才算是人生赢家,你知道吗? 你认为什么样才算是人生赢家? 小米手环2测的体脂率.为什么苹果端看不到 怎样才是真正的人生赢家 一建复习多长时间才能有希望通过 一建零基础备考需要多少时间?三个月够吗? 零基础备考一建,三个月够吗? 一建考试需要复习多久 如何做一名好的体育老师 汽车空调AC键? 我是一个新手,请问下我的逍客AC空调器按钮是干什么用的?还有空调按钮中的AUTO是什么功能?