将 PNG 转换为 SVG C#

PNG 图像转换为 SVG 格式是处理可缩放矢量图形时的一项关键任务,特别是在网页设计、数字艺术和需要高质量图像而不出现像素化的软件应用中。PNG 图像是基于栅格的,这意味着它们是由像素组成的,并且在缩放时可能会失去质量。另一方面,SVG(可缩放矢量图形)是一种矢量格式,可在任何分辨率下保留图像质量。

PNG 转 SVG 转换器 - C# API 安装

要将 PNG 图像转换为 SVG 图像,您需要从 New Releases 部分安装 Conholdate.Total for .NET 或运行以下 NuGet 安装命令:

Install-Package Conholdate.Total 

为什么将 PNG 转换为 SVG?

将 PNG 图像转换为 SVG 格式有几个令人信服的理由:

  • 可伸缩性而不失质量:与 PNG 图像在调整大小时质量下降不同,SVG 文件在任何分辨率下都保持清晰。这对响应式网页设计和高 DPI 显示器特别有用。

  • 某些图形文件较小:SVG 文件通常比 PNG 文件小,尤其在处理图标、徽标和简单插图时,使其非常适合性能优化至关重要的网络使用。

  • 可编辑和可自定义:SVG 图像可以使用基于文本的编辑器或像 Adobe Illustrator 和 Inkscape 这样的矢量图形工具轻松编辑。这使它们非常适合在 Web 应用程序中动态生成图形。

  • 更好的网页应用性能:由于 SVG 图像基于 XML,它们可以通过 CSS 和 JavaScript 进行操作,允许动态更改而无须新图像文件。

在 C# 中将 PNG 转换为 SVG

要在 C# 中将 PNG 图像转换为 SVG 格式,我们将使用 Conholdate.Total for .NET。这提供强大的图像矢量化功能,允许无缝地将光栅图像转换为可扩展矢量图形。

  • 初始化 ImageVectorizer:ImageVectorizer 类被初始化以处理 PNG 到 SVG 的转换。

  • 设置配置参数:

    • PathBuilder 属性被分配了一个 BezierPathBuilder,它确定了向量路径结构。

    • TraceSmoother 有助于减少噪音并增强轨迹,从而获得更清晰的矢量输出。

    • ErrorThreshold 和 MaxIterations 值控制向量化过程的准确性。

    • The ColorsLimit 设置了矢量化输出中的颜色数量,从而降低了复杂性。

    • LineWidth 定义了矢量路径的厚度。

  • 矢量化PNG:矢量化方法处理栅格图像并生成矢量表示。

  • 保存输出:Save 方法将最终的 SVG 文件写入磁盘。

下面的代码片段演示了如何在 C# 中将 PNG 转换为 SVG:

// 初始化 ImageVectorizer 类的实例
var vectorizer = new Aspose.Svg.ImageVectorization.ImageVectorizer
{
    // 设置配置
    Configuration =
    {
        // 设置路径构建器
        PathBuilder = new Aspose.Svg.ImageVectorization.BezierPathBuilder {
            // 设置追踪平滑器
            TraceSmoother = new Aspose.Svg.ImageVectorization.ImageTraceSmoother(1),
            ErrorThreshold =  30,
            MaxIterations = 30
        },
        ColorsLimit = 25,
        LineWidth = 1
    }
};

// 向量化 PNG
using var document = vectorizer.Vectorize("source.png");

// 将矢量化的 PNG 保存为 SVG 文件 
document.Save("source_out.svg");

免费评估许可证

您可以获得一个 免费临时许可证 以测试 API 提供的不同功能,而不受任何评估限制。

总结

在 C# 中将 PNG 图像转换为 SVG 格式是一项重要的技术,可以实现可缩放的高质量矢量图形。通过使用 Conholdate.Total for .NET,开发人员可以高效地执行此转换,具有很高的准确性和最小的努力。不论您是在处理 web 应用程序、数字艺术作品还是印刷图形,这种方法确保了最佳的图像质量和灵活性。不过,如果您需要讨论任何不明确之处,请通过 forum 联系我们。

另见