在WebBrowser控件中显示图像而不访问外部文件

时间:2009-08-03 13:04:35

标签: c# .net javascript webbrowser-control

我在an application中使用C#中的WebBrowser控件来显示HTML。所有数据都来自一个数据库,因此我在内存中生成一个包含Inline-CSS的完整页面并将其发送到浏览器。

但现在我想支持图像,这似乎是一个问题,因为我不想将图像存储在硬盘上,甚至不在临时目录中。我知道data: URI Scheme,但这似乎太有限了。

我想知道:我可以以某种方式使用JavaScript动态生成图像,给定一个字节流,基本上镜像数据:使用JavaScript的Scheme?或者是否有其他方式来显示图像,即使用GDI +?

如果需要,我可以对图像做一些假设,即如果需要,我可以强制用户指定宽度和高度,但我不能真正强制执行该位置,毕竟它是HTML。我还可以强制所有图像采用特定格式,基本上任何可以帮助解决这个问题的图像。

编辑:我可能会滥用VML这样的内容来显示位图数据吗?我似乎不能使用Canvas或SVG(在IE中都不支持,因此在MSHTML中不支持?)

编辑2: VML会起作用,但处理器负载是疯了。所以我要么实现一个Web服务器来提供文件(比如cassini),要么在我的另一个问题中尝试Silverlight approach

2 个答案:

答案 0 :(得分:2)

img-tag在其source属性中支持内联数据。因此,您可以获取图像数据,对其进行base64编码,并将其存储在src属性中。

Look here for an example. og你可以谷歌搜索html embed image以获取更多例子。

答案 1 :(得分:2)

如果您愿意为应用程序添加额外的复杂层,那么您可以嵌入一个可用于提供图像的简单Web服务器。 使用System.Net.HttpListener,您可以设置应用程序以按要求提供图像。这应该有用,但看起来非常糟糕......