图片的二进制数据库存储和显示
2009-12-10 12:54
483 查看
1.将图片以二进制存入数据库 2.读取二进制图片在页面显示 3.设置Image控件显示从数据库中读出的二进制图片 4.GridView中ImageField以URL方式显示图片 5.GridView显示读出的二进制图片 6.用ashx显示图片 1.将图片以二进制存入数据库 C# -------------------------- //保存图片到数据库 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.读取二进制图片在页面显示 C# -------------------------- //读取图片 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='wangwu' ", 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控件显示从数据库中读出的二进制图片 C# --------------------------------------------- SqlConnection myConn = new SqlConnection("Data Source=192.168.0.36;Initial Catalog=TestDB;User ID=sa;Password=sa"); SqlDataAdapter myda = new SqlDataAdapter(" SELECT personPhoto FROM personPhoto WHERE personName='wangwu' ", 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(); //显示图片 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> //绑定 C# 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; } } 6.用ashx显示调用图片 (1)aspx页面代码 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" /> <asp:TemplateField HeaderText="图片"> <ItemTemplate> <asp:Image ID="Image1" runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="圖片"> <ItemTemplate> <img src='<%# "GetImage.ashx?id="+ DataBinder.Eval(Container.DataItem,"id")%>' /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> (2).GetImage.ashx代码 <%@ WebHandler Language="C#" Class="GetImage" %> using System; using System.Web; using System.IO; using System.Drawing; using System.Data.SqlClient; public class GetImage : IHttpHandler { public void ProcessRequest (HttpContext context) { //context.Response.ContentType = "text/plain"; //context.Response.Write("Hello World"); string id = (string)context.Request["id"]; MemoryStream stream = new MemoryStream(); SqlConnection conn = new SqlConnection(@"server=.;database=DBNAME;uid=sa;pwd=sa"); Bitmap bm = null; Image image = null; try { conn.Open(); SqlCommand cmd = new SqlCommand("select photo from table2 where id='" + id + "'", conn); byte[] blob = (byte[])cmd.ExecuteScalar(); context.Response.ContentType = "image/gif"; context.Response.BinaryWrite(blob); context.Response.End(); #region /* stream.Write(blob, 78, blob.Length - 78); bm = new Bitmap(stream); int width = 48; int height = (int)(width * ((double)bm.Height / (double)bm.Width)); // getthumbnailimage生成缩略图 image = bm.GetThumbnailImage(width, height, null, IntPtr.Zero); context.Response.ContentType= "image/jpeg"; image.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg); */ #endregion } catch (Exception ex) { throw new Exception(ex.Message); } finally { if (image != null) image.Dispose(); if (bm != null) bm.Dispose(); stream.Close(); conn.Close(); } } public bool IsReusable { get { return false; } } } |
相关文章推荐
- .net 图片的二进制数据库存储和显示
- .net中显示数据库中存储的二进制格式图片
- BinaryImage:直接显示以二进制形式存储在数据库中的图片
- .net 图片的二进制数据库存储和显示
- 数据库中图片的二进制存储和显示
- BinaryImage:直接显示以二进制形式存储在数据库中的图片
- C# extjs 图片、附件以二进制形式存储至数据库,图片显示,附件下载
- 在数据库中 存储图片 以及 在界面中显示图片(存储图片路径)- 这种方法相对与存储二进制文件好
- 与图片的二进制数据库存储和显示
- 读取并显示以二进制的格式存储到数据库中图片
- .net 图片的二进制数据库存储和显示
- 与图片的二进制数据库存储和显示
- GridView控件 Image控件 与图片的二进制数据库存储和显示
- 数据库中图片的二进制存储和显示
- 与图片的二进制数据库存储和显示
- GridView控件 Image控件 与图片的二进制数据库存储和显示
- 数据库中图片的二进制存储和显示
- GridView控件 Image控件 与图片的二进制数据库存储和显示
- 图片以二进制形式存到数据库中,并从数据库中读出显示在页面上
- c# winform下图片二进制存储-改变大小-显示