我正在尝试在我使用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();
}
答案 0 :(得分:1)
看一下这个网址。其中一个用户创建了一个以System.Drawing.Image作为输入的函数。在调用下面页面中编写的函数之前,您可能必须将从db下载的二进制数据写入System.Drawing.Image类型的对象中
答案 1 :(得分:1)
你对二进制数组做什么需要改变(如果我猜对了你想要做的事情)
这是将二进制内容插入图像标记的替代技术。
您可以将其写入src
标记的<img>
属性,而不是仅将二进制内容流式传输到浏览器。您希望拥有的HTML看起来像this example(请注意图像内容是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>
标记。如果您使用的是服务器端控件,那么这样的代码可能会这样做(此示例代码段来自this SO answer):
byte[] picByteArray = user.Picture.ToArray();
string myPicString = Convert.ToBase64String(picByteArray);
myPicture.Attributes["src"] = "data:image/gif;base64," + myPicString;
<强> ADDITION 强>:
采用这种方式的一个可能的好处是,如果设计允许或需要它,您可以在单个数据库旅行中检索多个图像。
但正如我在评论中所说,这种方法的缺点是在处理页面时同步处理图像。
答案 2 :(得分:0)
您有两种选择:
image.aspx?width=200&height=100
。解析服务器端的查询字符串并调整服务器上的图像大小。当然你可以使用两者的混合。