0

在我的应用程序中,我在完成订单后向客户发送 HTML 电子邮件收据。我想做的是在 webbrowser 控件中预览它。

我的代码工作正常,但浏览器中缺少图像。

我在 AlternateView 中创建 HTML,如下所示:

Dim hview As AlternateView = AlternateView.CreateAlternateViewFromString(ReadTemplate(order), Nothing, "text/html")

然后遍历他们订购的图像并像这样添加它们:

Dim M As New LinkedResource(ResizeAndRotate(I.Path), Net.Mime.MediaTypeNames.Image.Jpeg) With {.ContentId = "Main" & cnt}
hview.LinkedResources.Add(M)

然后从 hview 流中返回一个文档:

Dim ObjDoc As New HTMLDocument
Dim Doc As IHTMLDocument2 = ObjDoc
Dim reader As New IO.StreamReader(hview.ContentStream)
Doc.write(reader.ReadToEnd)
Return ObjDoc

我还将如何从流中获取图像?

4

2 回答 2

1

我不相信你可以使用记忆中的图像。您需要将它们保存到硬盘驱动器,即使是暂时的。您必须在 HTML 中引用它们,如下所示:

<img alt="An image" src="file:///C:/Images/Image.jpg" width="400" height="400" />
于 2013-10-31T22:54:21.820 回答
1

您可以使用 base64 对图像数据进行编码,并将其嵌入到页面中,如Data URI scheme所支持的那样。例子:

<!-- http://en.wikipedia.org/wiki/Data_URI_scheme -->
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg=="/>

当然,这会增加页面大小的一些开销,这可能会很大,具体取决于原始图像大小。

于 2013-11-01T01:13:17.967 回答