用 C# 从网站中提取 SVG

您是否曾经遇到过想要从网页或实时 URL 保存或下载 SVG 图像的情况?可扩展矢量图形 (SVG) 是网页上使用的一种流行的图像格式。 SVG 图像是基于矢量的,这意味着它们由数学对象组成,可以缩放到任何大小而不损失质量。这使得它们成为存储和显示图像的通用且高效的格式。在这篇博文中,我们将讨论如何使用 C# 从网站中提取 SVG。

本文涵盖以下主题:

  1. 从网站提取 SVG 的 C# API
  2. 从网站提取 SVG
  3. 从网站下载外部 SVG 图像
  4. 免费学习资源

从网站提取 SVG 的 C# API

我们将使用 Aspose.HTML for .NET 从网站中提取 SVG。它允许开发人员操纵和处理 HTML 文档。它可用于在 .NET 应用程序中自动操作、转换或分析 HTML 文档。开发人员可以通过实施即用型解决方案以编程方式处理 HTML 相关任务来节省时间和精力。它还允许将 HTML 网页和文档转换为支持的格式,无需任何外部软件。

下载 API 的 DLL 或使用 NuGet 安装它。

PM> Install-Package Aspose.Html

用 C# 从网站中提取 SVG

我们可以使用提取所有嵌入的SVG图像<svg> 元素按照以下步骤操作:

  1. 使用 HTMLDocument 类加载网页。
  2. 使用 GetElementsByTagName() 方法读取所有内联 SVG 图像。
  3. 最后,循环遍历所有图像并保存到本地文件系统。

以下代码示例展示了如何使用 C# 从网站中提取 SVG。

// 以下代码示例演示了如何使用 C# 从网站中提取 SVG。
using Aspose.Html;

string OutputDir = "C:\\Files\\Internal\\";

// 打开要从中提取内联 SVG 图像的文档
using var document = new HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/");

// 收集所有内联 SVG 图像
var images = document.GetElementsByTagName("svg");

for (var i = 0; i < images.Length; i++)
{
    // 将每个 SVG 图像保存到本地文件系统
    File.WriteAllText(Path.Combine(OutputDir, $"{i}.svg"), images[i].OuterHTML);
}
用 C# 从网站中提取 SVG

用 C# 从网站中提取 SVG

使用 C# 从网站下载外部 SVG 图像

我们可以按照以下步骤提取存储在 HTML 文档外部的所有 SVG 图像并将其加载到文档中:

  1. 使用 HTMLDocument 类加载网页。
  2. 使用 GetElementsByTagName() 方法读取所有内联 SVG 图像。
  3. 最后,循环遍历所有图像并保存到本地文件系统。

以下代码示例展示了如何使用 C# 从网站中提取外部嵌入的 SVG。

using Aspose.Html;
using Aspose.Html.Net;

// 文件目录
string OutputDir = "C:\\Files\\";

// 打开要从中提取外部 SVG 的文档
using var document = new HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/");

// 收集所有图像元素
var images = document.GetElementsByTagName("img");

// 创建相对图像 URL 的不同集合
var urls = images.Select(element => element.GetAttribute("src")).Distinct();

// 过滤掉非 SVG 图像
var svgUrls = urls.Where(url => url.EndsWith(".svg"));

// 创建绝对 SVG 图像 URL
var absUrls = svgUrls.Select(src => new Url(src, document.BaseURI));

foreach (var url in absUrls)
{
    // 创建提取请求
    using var request = new RequestMessage(url);

    // 提取 SVG
    using var response = document.Context.Network.Send(request);

    // 检查是否响应成功
    if (response.IsSuccess)
    {
        // 将 SVG 图像保存到本地文件系统
        File.WriteAllBytes(Path.Combine(OutputDir, url.Pathname.Split('/').Last()), response.Content.ReadAsByteArray());
    }
}

获取免费许可证

您可以获得免费的临时许可证来尝试 Aspose.HTML for .NET,而不受评估限制。

从网站提取 SVG – 学习资源

您可以了解有关从网站提取 SVG 的更多信息,并使用以下资源探索该库的各种其他功能:

结论

在本文中,我们学习了如何使用 C# 从网站中提取 SVG。从网站或网页中提取 SVG 的能力为数字创造力带来了新的维度。无论是归档鼓舞人心的图形、分析设计趋势还是增强您自己的项目,本文概述的步骤都表明该过程相对简单并且只需要几行代码。如有任何疑问,请随时通过我们的免费支持论坛与我们联系。

也可以看看