将图像转换为 Base64 C#

在处理基于网页的图形、电子邮件内容或 SVG 文档时,使用 Base64 编码直接在文件中嵌入图像是一种强大且实用的技术。与引用外部图像文件不同,Base64 编码允许开发人员将图像数据作为字符串包含。这种方法广泛用于减少外部依赖并改善图形应用的可移植性。在本文中,我们将探索如何在 C# 中将图像转换为 Base64 并使用一种简单有效的方法将其嵌入到 SVG 文档中。

为什么将图像转换为 Base64?

将图像转换为 C# 中的 Base64 格式可以根据用例提供几个优点。最常见的情况之一是当您生成需要完全自包含的 SVG 文件时。与其链接到可能被移动、重命名或变得不可用的外部图像文件,不如将图像数据嵌入为 Base64,以确保所有必要的资源都包含在一个文件中。

另一个好处是在某些情况下提高加载的可靠性和性能。例如,在发送带有嵌入图像的电子邮件或开发离线优先的网络应用程序时,依靠 Base64 编码意味着图像始终会正确显示,无论网络是否可用。

JPG 或 PNG 转 Base64 转换器 - C# API 安装

您需要在您的环境中使用 NuGet 安装命令安装 Conholdate.Total for .NET:

PM> NuGet\Install-Package Conholdate.Total

在 C# 中将图像转换为 Base64

让我们看一个实际示例,如何从磁盘加载 JPG 或 PNG 图像,将其转换为 Base64 字符串,并直接嵌入到 SVG 文档中,使用 C#。这种方法可以适应各种图像类型和应用需求。

  • 读取图像文件:File.ReadAllBytes() 方法从指定路径读取输入图像文件,并将其存储为字节数组。这是处理任何图像进行 Base64 转换的必要步骤。

  • 创建 SVG 文档:使用 SVGDocument 对象,我们初始化一个新的 SVG 结构,以保存我们的图像数据。

  • 使用 Base64 嵌入图像:图像元素创建并且其 Href.BaseVal 属性被设置为图像的 Base64 编码字符串,并以正确的数据 URI 架构(data:image/png;base64,)为前缀。这告诉浏览器和渲染工具图像数据是直接嵌入的,而不是外部链接的。

  • 最终确定 SVG 文件:Base64 编码的图像元素被添加到 SVG 文档的根部,并将完整的 SVG 保存到磁盘。

以下代码片段展示了如何在 C# 中将 JPG 或 PNG 图像转换为 Base64:

// 加载输入 JPG 图像
var bytes = File.ReadAllBytes(@"C:\Files\Sample_JPG.jpg");

// 初始化一个 SVGDocument 对象
var document = new SVGDocument();

// 创建一个图像元素
var img = (SVGImageElement)document.CreateElementNS("http://www.w3.org/2000/svg", "image");

// 将图像转换为 Base64
img.Href.BaseVal = "data:image/png;charset=utf-8;base64," + Convert.ToBase64String(bytes);

// 将图像元素添加到 SVG 文档中
document.RootElement.AppendChild(img);

// 保存 SVG 文档
document.Save(@"C:\Files\image-base64.svg");

免费评估许可证

您可以通过请求 免费临时许可 来测试 API 提供的各种功能。

总结

直接在 SVG 文件中使用 C# 的 Base64 编码嵌入图像是一种确保可移植性、可靠性和简化的方法。无论您是在处理图形、报告还是网页内容生成,这种方法消除了外部依赖关系,并简化了您的工作流程。通过使用提供的代码片段,您可以轻松地将任何图像转换为 Base64,并将其集成到您的 SVG 结构中,使您的应用程序更强大、更具适应性。如果您需要澄清任何疑问,请通过 forum 与我们联系。

常见问题解答

Base64 编码在图像中的用途是什么?

Base64 编码允许将二进制图像数据表示为纯文本字符串,使其易于嵌入 SVG、HTML 和 XML 等文档中,而无需链接外部文件。

我可以将此技术用于 PNG 或 GIF 文件吗?

绝对正确。相同的方法适用于任何图像格式。您只需在 Base64 前缀中调整 MIME 类型(例如, image/png, image/gif)。

这个可以为批量图像转换自动化吗?

当然。你可以循环遍历一个图片文件夹,将每张图片转换为 Base64,并以编程方式生成相应的 SVG。

另见