我有一个控制,返回一个类型字符串和System.Drawing.Image字典。我想遍历字典并输出一个ASP图像控件,显示包含在每个键值对中的图像。我知道这需要通过HTTP处理程序来完成,但我不确定如何去做。假设图像需要转换为字节数组,然后作为处理程序的输出流返回,那么Image或byte数组如何作为Handler的上下文的一部分传递?如何使用HTTP处理程序在网页上显示System.Drawing.Image?
0
A
回答
0
您可以拨打Image.Save方法。
using(MemoryStream ms = new MemoryStream())
{
image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ms.WriteTo(context.Response.OutputStream);
}
0
您需要正确和流返回内容类型,请参阅 这link for refference
0
在这里,我假设你是字典对象绑定到一个中继器和HttpHandler的名字是imageHandler。所以一旦字典对象绑定你会得到这样的
<ItemTemplate> <asp:Image id="image1" runat="server" ImageUrl='<%# "~/imageHandler.ashx?k=" + Eval("key")%>' /> </ItemTemplate>
阅读查询字符串,这将给你的关键,那么你可以从字典中获得System.Drawing.Image对象之后,你可以将它转换成bytearray并继续下去。
您可以进一步重构您的代码,以便您可以将所有键值作为列表或枚举并将其绑定,然后在httphandler中查询数据库。
Response.Write(byte array) and response.contenttype= "give the correct content type"
希望这有助于。
0
Web上可用的大多数示例都将id传递给ashx处理程序;处理程序路径和id一起被设置为图像控件的源。在大多数情况下,对处理程序的每个请求都将访问数据库并获取图像,执行处理并呈现图像。
但在你的情况下,你似乎已经有了图像字典(所以你需要一种方法将该信息传递给处理程序)。一种方法是将图像缓存为内存流,并在ashx处理程序中访问cahced项目并稍后清除缓存。这已经是discussed here;但不是优雅的解决方案。
您可能还需要检查this blog post by Scott Hanselman,在那里他的延伸会谈<asp:image/>
相关问题
- 1. http处理程序不显示图像
- 2. 如何从python程序显示网页?
- 3. 如何使我的iOS应用程序处理网页链接
- 4. 如何在网页上显示某个课程时显示DIV?
- 5. 如何显示使用图像处理程序asp.net
- 6. 如何最好地优先处理网页上的HTTP请求?
- 7. ASP.Net:使用处理程序显示异步图像上传
- 8. 如何从C++应用程序调用http处理程序?
- 9. 如何在Android应用程序内显示外部html /网页?
- 10. 如何在我的应用程序中显示网页?
- 11. 如何在wpf应用程序中显示网页的信息
- 12. 如何在应用程序发明者2中显示网页?
- 13. 如何在黑莓应用程序中显示网页?
- 14. 如何:使用Actionfilter创建缩略图,如HTTP处理程序
- 15. 如何在处理程序/线程中显示Toast?
- 16. 不使用通用http处理程序显示二进制图像
- 17. Chromedp:如何处理网页上的iframe?
- 18. 如何将网页套接字和异步HTTP方法和处理程序在asp.net网页
- 19. NLua - 网页上显示的应用程序是否存在?
- 20. 在网页应用程序上显示excel
- 21. 在网页上显示进程日志
- 22. HTTP处理程序来处理.zips
- 23. Chrome浏览器不显示通过HTTP处理程序
- 24. 在网页上显示多个网页
- 25. 使用javascript处理网页
- 26. 如何使用Django在网页上显示data_frame.plot.bar()的结果?
- 27. 如何使用javascript在特定网页上显示按钮
- 28. 如何使用Python2.7在网页上显示所有ID的值?
- 29. 如何上传图片并使用PHP在网页中显示?
- 30. 如何使用$ q.all(承诺)并在网页上显示回复?
但HttpHandler的没有那么传递给它的关键是无用的Dictionary对象的知识。 –