【问题标题】:C# accessing embedded image from within an embedded HTML resourceC# 从嵌入的 HTML 资源中访问嵌入的图像
【发布时间】:2016-01-28 09:15:53
【问题描述】:

我想在 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 的答案,但对这项任务没有帮助。

非常感谢任何帮助。

杰夫·W.

阅读,宾夕法尼亚

【问题讨论】:

  • 一个指向图片的base64表示的数据uri?
  • 资源有 res:// 协议,但不确定它是否适用于托管资源。
  • 拥有一个 MHT 资源? (网页单)?
  • Alex,这是一个有趣的想法:MHT 文件。我得调查一下那个。谢谢!

标签: c# resources webbrowser-control


【解决方案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);

【讨论】:

  • 这与 Alex 之前发布的内容几乎相同,只是他的方法(使用 IE 将文件保存为 MHT)自动编码。事实证明,Alex 的解决方案有效(因为该项目的最低要求是 IE9),所以我认为此事已经结束。谢谢大家!
  • @JeffWoods 资源嵌入 MHT 在 WinXP & Win7 下可以工作,但在 Win10 下不工作(会显示空白页)。所以最好的方法是在单个 .html 文件中使用 base64 图像。
猜你喜欢
  • 2013-11-25
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多