Asp.net 是否有任何控件将System.Drawing.Image对象和视图作为图像?
我从数据库返回图像数组(System.Drawing.Image[]),并希望在datagrid或datalist中显示它们。。有人能告诉我怎么做吗?没有,据我所知,没有控件能做到这一点 基本上,您需要做的是向解决方案中添加一个新页面(或处理程序),然后从该页面执行Asp.net 是否有任何控件将System.Drawing.Image对象和视图作为图像?,asp.net,sql-server-2005,image,Asp.net,Sql Server 2005,Image,我从数据库返回图像数组(System.Drawing.Image[]),并希望在datagrid或datalist中显示它们。。有人能告诉我怎么做吗?没有,据我所知,没有控件能做到这一点 基本上,您需要做的是向解决方案中添加一个新页面(或处理程序),然后从该页面执行响应。BinaryWrite将图像直接写入响应。然后在主页中,将图像链接到该新页面,有点像 这些链接将为您提供一个良好的开端 不,据我所知,没有任何控件可以这样做 基本上,您需要做的是向解决方案中添加一个新页面(或处理程序),然后从
响应。BinaryWrite
将图像直接写入响应。然后在主页中,将图像链接到该新页面,有点像
这些链接将为您提供一个良好的开端
不,据我所知,没有任何控件可以这样做 基本上,您需要做的是向解决方案中添加一个新页面(或处理程序),然后从该页面执行
响应。BinaryWrite
将图像直接写入响应。然后在主页中,将图像链接到该新页面,有点像
这些链接将为您提供一个良好的开端
如果图像相当小,您可以发送带有网页标记的Base64编码图像 请注意:这只是一个演示,目的是证明这是可能的,我认为不应该在真正的网站上进行 实际上,你应该:
- 考虑将这些图像写入磁盘,并将其作为常规图像提供,并使用适当的缓存头,而不必每次访问数据库
- 实现一个处理程序,该处理程序首先检查磁盘上是否已存在映像,并仅在需要时从数据库中检索映像(这将是第一次请求映像)
- 使用url重写,只将与磁盘上的图像不对应的图像url传递给处理程序。这比通过ASP.Net管道传递所有请求更快。这很好
<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管道传递所有请求更快。这很好
<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管道的情况下为磁盘上的图像提供服务(参见我的答案)