在asp.net image标签中插入图像

本文关键字:插入 图像 标签 image asp net | 更新日期: 2023-09-27 18:14:52

我试图在我使用VS2012开发的web应用程序的webform的图像标签上显示我的图片。我已经在sql server 2008二进制形式存储了我的图像。我试图通过c#代码显示出图像。但是,显示出来的图像是精确的尺寸大小。我试图将这个特定选择存储到具有特定尺寸的图像标记中。这是我用来显示我的图像的代码。

这里的代码是为了让我从数据库中选择出图片。我设法用这个把图片显示出来了。

string strQuery = "select profilepic from LoginRegisterOthers where username=@username";
            SqlCommand cmd = new SqlCommand(strQuery);
            cmd.Parameters.Add("@username", SqlDbType.VarChar).Value = username;
            DataTable dt = GetData(cmd);
            if (dt != null)
            {
                download(dt);
            }

此代码随后用于将图像二进制数据转换为图像。

private void download(DataTable dt)
    {
        Byte[] bytes = (Byte[])dt.Rows[0]["profilepic"];
        Response.Buffer = true;
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "image/jpg";
        //Response.AddHeader("content-disposition", "attachment;filename=" + dt.Rows[0]["Name"].ToString());
        Response.BinaryWrite(bytes);
        Response.Flush();
        Response.End();
    }

在asp.net image标签中插入图像

你用二进制数组做什么需要改变(如果我猜对了你想做什么)

这是在图像标记中插入二进制内容的另一种技术。

您可以将二进制内容写入<img>标记的src属性中,而不是将其流式传输到浏览器。您想要的HTML看起来像下面这个例子(注意图像内容是base64编码的):

<img   src="data:image/gif;base64,R0lGODlhUAAPAKIAAAsLav///88PD9WqsYmApmZmZtZfYmdakyH5BAQUAP8ALAAAAABQAA8AAAPb
WLrc/jDKSVe4OOvNu/9gqARDSRBHegyGMahqO4R0bQcjIQ8E4BMCQc930JluyGRmdAAcdiigMLVr
ApTYWy5FKM1IQe+Mp+L4rphz+qIOBAUYeCY4p2tGrJZeH9y79mZsawFoaIRxF3JyiYxuHiMGb5KT
kpFvZj4ZbYeCiXaOiKBwnxh4fnt9e3ktgZyHhrChinONs3cFAShFF2JhvCZlG5uchYNun5eedRxM
AF15XEFRXgZWWdciuM8GCmdSQ84lLQfY5R14wDB5Lyon4ubwS7jx9NcV9/j5+g4JADs=
" alt="British Blog Directory" width="80" height="15" />

现在,要完成此操作,您可能有几个选项。这完全取决于您如何渲染<img>标记。如果您使用的是服务器端控件,那么像这样的代码就可以了(这个示例代码片段来自于这个SO答案):

byte[] picByteArray = user.Picture.ToArray(); 
string myPicString = Convert.ToBase64String(picByteArray); 
myPicture.Attributes["src"] = "data:image/gif;base64," + myPicString;

添加:

这样做的一个可能的好处是,如果设计允许或需要,您可以在一次数据库访问中检索多个图像。

但是正如我在评论中所说的,这种方法有一个缺点,即图像是同步处理的,因为你的页面是同步处理的。

看看这个url。其中一个用户创建了一个函数,将System.Drawing.Image作为输入。您可能需要将从数据库中下载的二进制数据写入到System.Drawing.Image类型的对象中,然后再调用下面页面中编写的函数

http://social.msdn.microsoft.com/forums/en - us/csharpgeneral/thread/a43fe625 a5cd - 4438 - 895 - f - 3 - ddeec6eb866/

你有两个选择:

  • in标签使用CSS或html属性指定图像的宽度和高度。这导致用户总是下载完整尺寸的图像,但它将显示裁剪
  • 在src的img标签设置宽度和高度为:image.aspx?width=200&height=100。在服务器端解析查询字符串并在服务器端调整图像大小。

当然你可以两者混合使用