Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 是否有任何控件将System.Drawing.Image对象和视图作为图像?_Asp.net_Sql Server 2005_Image - Fatal编程技术网

Asp.net 是否有任何控件将System.Drawing.Image对象和视图作为图像?

Asp.net 是否有任何控件将System.Drawing.Image对象和视图作为图像?,asp.net,sql-server-2005,image,Asp.net,Sql Server 2005,Image,我从数据库返回图像数组(System.Drawing.Image[]),并希望在datagrid或datalist中显示它们。。有人能告诉我怎么做吗?没有,据我所知,没有控件能做到这一点 基本上,您需要做的是向解决方案中添加一个新页面(或处理程序),然后从该页面执行响应。BinaryWrite将图像直接写入响应。然后在主页中,将图像链接到该新页面,有点像 这些链接将为您提供一个良好的开端 不,据我所知,没有任何控件可以这样做 基本上,您需要做的是向解决方案中添加一个新页面(或处理程序),然后从

我从数据库返回图像数组(System.Drawing.Image[]),并希望在datagrid或datalist中显示它们。。有人能告诉我怎么做吗?

没有,据我所知,没有控件能做到这一点

基本上,您需要做的是向解决方案中添加一个新页面(或处理程序),然后从该页面执行
响应。BinaryWrite
将图像直接写入响应。然后在主页中,将图像链接到该新页面,有点像

这些链接将为您提供一个良好的开端


不,据我所知,没有任何控件可以这样做

基本上,您需要做的是向解决方案中添加一个新页面(或处理程序),然后从该页面执行
响应。BinaryWrite
将图像直接写入响应。然后在主页中,将图像链接到该新页面,有点像

这些链接将为您提供一个良好的开端


如果图像相当小,您可以发送带有网页标记的Base64编码图像

请注意:这只是一个演示,目的是证明这是可能的,我认为不应该在真正的网站上进行

实际上,你应该:

  • 考虑将这些图像写入磁盘,并将其作为常规图像提供,并使用适当的缓存头,而不必每次访问数据库
  • 实现一个处理程序,该处理程序首先检查磁盘上是否已存在映像,并仅在需要时从数据库中检索映像(这将是第一次请求映像)
  • 使用url重写,只将与磁盘上的图像不对应的图像url传递给处理程序。这比通过ASP.Net管道传递所有请求更快。这很好
这就是base64编码图像的演示。 将转发器添加到您的页面:

<asp:Repeater ID="ImageRepeater" runat="server">
<ItemTemplate>
    <asp:Literal ID="ltImage" runat="server"><img src="data:image/jpg;base64,{0}" alt="" /></asp:Literal>
</ItemTemplate>
</asp:Repeater>
您可能要禁用Viewstate


感谢和代码位。

如果图像相当小,您可以将其发送到带有网页标记的Base64编码图像

请注意:这只是一个演示,目的是证明这是可能的,我认为不应该在真正的网站上进行

实际上,你应该:

  • 考虑将这些图像写入磁盘,并将其作为常规图像提供,并使用适当的缓存头,而不必每次访问数据库
  • 实现一个处理程序,该处理程序首先检查磁盘上是否已存在映像,并仅在需要时从数据库中检索映像(这将是第一次请求映像)
  • 使用url重写,只将与磁盘上的图像不对应的图像url传递给处理程序。这比通过ASP.Net管道传递所有请求更快。这很好
这就是base64编码图像的演示。 将转发器添加到您的页面:

<asp:Repeater ID="ImageRepeater" runat="server">
<ItemTemplate>
    <asp:Literal ID="ltImage" runat="server"><img src="data:image/jpg;base64,{0}" alt="" /></asp:Literal>
</ItemTemplate>
</asp:Repeater>
您可能要禁用Viewstate


感谢和代码位。

我已经使用了这种方式,但我总是问我是否有一个gridView,可以在页面中显示10幅图像。。这意味着你需要与服务器进行10次连接才能获得每个映像:(?你是正确的。这就是为什么你应该使用处理程序而不是页面(所需资源更少)和url重写来为磁盘上的映像提供服务,而不必输入ASP.Net管道(请参阅我的答案)我已经使用了这种方式,但我总是问我是否有一个gridView,它将在页面中显示10个图像。这意味着你需要与服务器进行10次连接才能获得每个图像:(?你是正确的。这就是为什么你应该使用处理程序而不是页面(所需资源更少)和url重写,以便在不进入ASP.Net管道的情况下为磁盘上的图像提供服务(参见我的答案)