如何在标记语言 (C#) 中嵌入图像?

How to embed an image within an markup language (C#)?

我需要格式化文本并通过 WebService 将其提供给同样用 C# 编写的客户端应用程序。我需要文本格式,就像 Whosebug 提供的粗体、编号等

此外,我需要在此 "text" 中嵌入一张图片。导致提供的文本(包括图像)需要存储在客户端,以便在 Web 服务不可用的情况下进行缓存。

我认为可以使用标记语言来解决文本格式问题,但是如何 store/embed 格式化文本中的图像?

或者 HTML 这可能吗?重要的是,例如,我在网络上提供了一个用于文本输入的小界面和用于图像的 select,然后嵌入到文本中。所以我需要在客户端(winforms 应用程序)和 Web 端(asp.net mvc 应用程序)有一个解析器和显示组件。

嗯,您会使用某种标记语言。如果要在 Web 上显示结果,HTML 是最合乎逻辑的选择。但是,通常没有标记语言可以让您嵌入图像。标记是 text-based,图像是二进制文件。这两种格式并没有真正混合。

也就是说,HTML 有点特殊。您可以使用数据 URI 来包含任意图像数据或 SVG,因为 SVG 本身是一种专门的矢量格式,它使用标记而不是二进制代码来对图像进行编码。但是,如果您的图像不是矢量,则您将不得不依赖数据 URI,即使那样,它们也应该只用于相对较小的图像。 Data URI 基本上是一个编码为 base64 的字节数组,这意味着它不能很好地扩展。例如,我刚刚测试了将 44 KB 的图像编码为数据 URI,结果是 62 KB。不过,如果您选择这样做,则语法为:

<img src="data:[mimetype];base64,[data]"/>

其中 [mimetype] 是图像的 MIME 类型(image/jpegimage/png 等),[data] 是您的 base64 编码字节数组。

现在浏览器普遍支持数据URI,但是一些老版本的IE,尤其是一些老版本的IE,无法读取。不过,这可能不是问题。令人担忧的是,您发送的响应几乎 必须 用于在网络上显示,否则必须由可以解析 HTML 的东西进行处理(和数据 URI)像 WebKit。结果,就如何利用响应而言,您陷入了困境。