在 WebBrowser 控件上的 HTML 内嵌入资源图像

Embed resource image inside HTML on WebBrowser control

我正在将资源图像填充到 WebBrowser 控件上的 HTML table 中。到目前为止,我可以使用下面列出的函数将图像转换为字节,但无法将内存流转换为 HTML:

Dim imgBase64 As String = Convert.ToBase64String(BmpToBytes_MemStream(My.Resources.myimage))

Dim str1 as String = ""

str1 += ("<table class=" & """" & "mycssclass" & """" & " Align=center>")
str1 += ("<caption><b>My Caption</b></caption>")
str1 += "<tr><td><iframe width=100% height=100% src=imgBase64></iframe></td></tr>"
str1 += ("</table>")
WebBrowser1.Refresh()
WebBrowser1.DocumentText = str1

下面是图像BMP转字节函数:

 Private Function BmpToBytes_MemStream(ByVal bmp As Bitmap) As Byte()
        Return new ImageConverter().ConvertTo(bmp, GetType(byte()))
 End Function

HTML 中有一个将 pdf 加载到 IFRAME 的示例,如下所示:

  $"<iframe width=100% height=500 src=""data:Application/pdf;base64,{pdfBase64}"">" 

但是,我不确定在 HTML 中的 IFRAME 中显示 Base64 图像所需的确切语法。另外,是否需要“$”字符?

感谢@Jimi 的评论,我想将讨论浓缩为一个有效的答案。

在您的代码中的某处添加以下函数:

Private Function BmpToBytes_MemStream(ByVal bmp As Bitmap) As Byte()
    Return New ImageConverter().ConvertTo(bmp, GetType(Byte()))
End Function

接下来,将资源图像(这是一个名为myimage.png的png图像)转换为Base64:

 Dim myimage64 As String = Convert.ToBase64String(BmpToBytes_MemStream(My.Resources.myimage))

最后,将转换后的图像嵌入 HTML 代码中,例如:

Dim str1 as String = ""

str1 += "<table class=" & """" & "mycssclass" & """" & " Align=center>"
str1 += "<caption><b>My Caption</b></caption>"
str1 += "<tr><td>$"<img src = ""data:image/png;base64,{myimage64}"">"</td></tr>"
str1 += ("</table>")
WebBrowser1.Refresh()
WebBrowser1.DocumentText = str1