GridView控件显示图片
与图片的二进制数据库存储和显示
1.将图片以二进制存入数据库
2.读取二进制图片在页面显示
3.设置Image控件显示从数据库中读出的二进制图片
4.GridView中ImageField以URL方式显示图片
5.GridView显示读出的二进制图片
====================
1.将图片以二进制存入数据库

 
Code//保存图片到数据库
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.读取二进制图片在页面显示

 
Code
//读取图片 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控件显示从数据库中读出的二进制图片

 
Code
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方式显示图片

 
Code
----------------------------
<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显示读出的二进制图片

 
Code
//样板列
<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;
    }   
}
GridView控件显示图片的更多相关文章
- 让DELPHI自带的richedit控件显示图片
		让DELPHI自带的richedit控件显示图片 unit RichEx; { 2005-03-04 LiChengbin Added: Insert bitmap or gif into RichE ... 
- Android:ImageView控件显示图片
		1)android显示图片可以使用imageView来呈现,而且也可以通过ImageButton来实现给button添加图片. 2)在创建一个ImageView后,显示图片绑定元素是:android: ... 
- VC2005中将Picture控件显示图片保存为BMP,JPG等格式
		1.在stdafx.h头文件中加入 #include <atlimage.h> 2.保存图片 方法一: HBITMAP hBitmap = NULL; //创建位图段 BITMAPIN ... 
- winform下picturebox控件显示图片问题
		viewData_pictureBox.SizeMode=PictureBoxSizeMode.StretchImage;图片会自动按照比例缩放来完全显示在你的PictureBox中. 
- Repeater, DataList, 和GridView控件的区别
		http://blog.sina.com.cn/s/blog_646dc75c0100h5p6.html http://www.cnblogs.com/phone/archive/2010/09/15 ... 
- 数据绑定技术一:GridView控件
		在网站或应用程序中,要显示数据信息,可用到ASP.NET提供的数据源控件和能够显示数据的控件. 一.数据源控件 数据源控件用于连接数据源.从数据源中读取数据以及把数据写入数据源. 1.数据源控件特点 ... 
- 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常
		代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常 设置 padding=0 
- asp.net GridView控件的列属性
		BoundField 默认的数据绑定类型,通常用于显示普通文本 CheckBoxField 显示布尔类型的数据.绑定数据为TRUE时,复选框数据绑定列为选中状态:绑定数据为FALSE时,则显示未选中状 ... 
- 027.  asp.net中数据绑定控件之 GridView控件
		GridView控件支持下面的功能: 绑定至数据源控件, 如SqlDataSource 内置排序功能 内置更新和删除功能 内置分页功能 内置行选择功能 可以编程方式访问GridView对象模型以动态设 ... 
随机推荐
- 113. Path Sum II
			题目: Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the give ... 
- 如何定制Sink扩展.Net Remoting功能
			http://www.cnblogs.com/rickie/archive/2004/10/21/54891.html 
- RabbitMQ安装和配置
			RabbitMQ: MQ:message queue.MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来 ... 
- 中国VR公司的详尽名单
			中国VR公司的详尽名单 <VR圈深度投资报告一:2014年以来所有VR/AR融资事件> 特征一.投资机构观望居多 尽管VR在媒体和二级市场炒得很热,但大多风险投资机构却慎于出手,以观望 ... 
- js 动态计算折扣后总价格
			<script type="text/javascript"> <!---计算折扣后的总价格---> function outtotalprice(i) { ... 
- 数论/the second wave
			扩展欧几里得算法. void exgcd(int a,int b,int&x,int&y){ if(!b) { x=1;y=0;return ; } exgcd(b,a%b,x,y); ... 
- HNOI2008玩具装箱 (斜率优化)
			总算A了,心情好激动…… 如果会了一类斜率优化,基本上这类题就成了套模版了…… 只是k函数不同 var n,l,x,tail,head,m:int64; i,j:longint; dp,q,s:..] ... 
- 【Grunt】
			GRUNT The JavaScript Task Runnerhttp://gruntjs.com/ Grunt打造前端自动化工作流http://tgideas.qq.com/webplat/inf ... 
- JPA--多对多关系
			JPA中,多对多关系用@ManyToMany标示. 关系维护端: package com.yl.demo1.bean.manyTomany; import java.util.HashSet; imp ... 
- DICOM医学图像处理:DIMSE消息发送与接收“大同小异”之DCMTK fo-dicom mDCM
			背景: 从DICOM网络传输一文开始,相继介绍了C-ECHO.C-FIND.C-STORE.C-MOVE等DIMSE-C服务的简单实现,博文中的代码给出的实例都是基于fo-dicom库来实现的,原因只 ... 
