C#从嵌入式HTML资源中访问嵌入式图像

时间:2015-10-28 14:28:13

标签: c# resources webbrowser-control

我想在VS 2013 C#WinForms应用程序中拥有两个嵌入式资源。

一个是JPG文件:嵌入它非常简单。

另一个是HTML文件(也很容易嵌入),但它是HTML的内容让我适合。 HTML正文需要将嵌入的JPG文件作为资源引用:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="utf-8" />
  <title></title>
</head>
<body>
  <image src=".... **reference that embedded JPG here**" />
</body>
</html>

目标是能够在WebBrowser控件中显示该HTML文件,该文件仅包含图像内容,而无需独立于应用程序资源存储任何文件。

我在这里看到了一些引用WebForms的其他答案,但没有一个对此任务有帮助。

非常感谢任何帮助。

Jeff W。

阅读,PA

1 个答案:

答案 0 :(得分:1)

您可以对图像进行base-64编码并将其放入HTML或CSS中。老浏览器不支持它(我认为IE8之前的版本?)但是否则你应该好好去。以下是如何执行此操作:https://css-tricks.com/data-uris/

否则,您只想在存储的HTML中放置一个占位符,并将其与base-64编码图像交换出来。

HTML

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="utf-8" />
  <title></title>
</head>
<body>
  <image src="data:image/gif;base64,{0}" /> <!-- Replace here -->
</body>
</html>

C#

var html = GetStringResource(); // However you do it.
var imageData = GetImageResource(); // Ditto
var encoded = GetBase64FromBinary(imageData); // TODO
var finalHtml = string.Format(html, encoded);