在我的应用程序中,我在完成订单后向客户发送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
我如何从流中获取图像?
答案 0 :(得分:1)
我不相信你可以使用内存中的图像。您需要将它们保存到硬盘驱动器,即使是暂时的。您必须在HTML中引用它们,如下所示:
<img alt="An image" src="file:///C:/Images/Image.jpg" width="400" height="400" />
答案 1 :(得分:1)
您可以使用base64对图像数据进行编码,并将其嵌入页面中,如Data URI scheme所支持。例如:
<!-- http://en.wikipedia.org/wiki/Data_URI_scheme -->
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg=="/>
当然,这会增加页面大小的开销,这可能会有很大的影响,具体取决于原始图像大小。