图像矢量化 – C# 代码和在线矢量化工具

准备好切换到矢量图形了吗?

什么是图像矢量化?

图像矢量化是将标准位图图像转换为数学上可扩展的矢量图形的过程,这些图形由贝塞尔曲线、样条线和直线组成。矢量化的主要优点是图像在放大时不会出现像素化。无损缩放、显著减小的文件体积以及对流畅动画的支持只是使用矢量图形的部分优势。 Aspose.SVG for .NET API 使您能够实施高速 C# 矢量化流程,让您完全控制如何对光栅图像进行描摹并将其转换为干净的 SVG 文件。


在线图像矢量化工具

我们的交互式图像矢量化工具旨在立即将光栅图像转换为矢量图形。它生成由贝塞尔曲线和直线组成的精密几何形状,并将所有生成的元素保存为干净的 SVG 文件。该工具几乎支持所有标准位图格式,包括 JPEG、PNG、BMP、ICO、GIF、TIFF 和 WEBP。您可以在下载最终的可扩展矢量图之前,直接在浏览器中轻松测试各种矢量化选项,如颜色限制和路径平滑!


如何使用图像矢量化器?

  1. 从本地文件系统加载源光栅图像。UI 显示三个面板:Source Image、Quantized Image 和 Vectorized Image。
  2. 引擎使用默认属性评估 Image。要优化 SVG 输出,请使用侧边栏调整量化和矢量化参数。单击 Quantize 预览调色板缩减,然后单击 Vectorize 渲染 SVG 路径。
  3. 单击 Download 保存生成的矢量文件。

量化选项 (Quantization Options)

调整这些设置以控制算法如何对像素进行分组并减少初始调色板:

  • colors – 设置精确的最大调色板大小限制。
  • method – 在基于直方图的颜色量化算法之间切换。
  • minHueCols – 控制处理颜色渐变的灵敏度限制。
  • scale – 调整比例因子以进行更精细或更粗糙的颜色采样。
  • grayscale – 将输出强制设为单色边界。

矢量化选项 (Vectorization Options)

控制应用于量化地图的几何跟踪行为:

  • threshold – 定义检测边界轮廓的像素灵敏度限制。
  • severity – 使用最近邻空间大小修改轮廓平滑。
  • line-width – 确定分配给生成的 SVG 线条的笔触粗细。
  • stencil – 应用二进制轮廓遮罩,非常适合将连续色调照片转换为模板轮廓。
  • trace paths – 切换用于构建线段的贝塞尔曲线和样条曲线控制点的可视渲染。

如何在 C# 中矢量化图像

Aspose.SVG for .NET API 提供了专门的 ImageVectorization 命名空间,它可以处理图像到矢量转换的所有复杂任务。这些类允许您轻松控制各种预处理选项,例如调整 ColorsLimit 来简化图像,或在 PathBuilder 中应用 TraceSmoother 来消除保存最终结果前的粗糙像素边缘。


在 C# 中进行图像矢量化

    // Initialize an instance of the ImageVectorizer class
    ImageVectorizer vectorizer = new ImageVectorizer
    {
        // Optionally set a configuration and specify configuration properties
        Configuration =
        {
            // Optionally create an instance of the PathBuilder class
            PathBuilder = new BezierPathBuilder 
            {
                // Optionally set trace smoother
                TraceSmoother = new ImageTraceSmoother(1),
                ErrorThreshold = 30,
                MaxIterations = 30
            },
            ColorsLimit = 25,
            LineWidth = 1
        }
    };
    
    // Vectorize image from the specified file
    using (SVGDocument document = vectorizer.Vectorize(Path.Combine(DataDir, "image.png")))
    {
        // Save vectorized image as SVG file
        document.Save(Path.Combine(OutputDir, "image.svg"));
    }

在 C# 中实现图像矢量化的步骤

在 C# 中将光栅图像转换为可扩展的矢量模型需要以下三个简单的步骤:

  1. 初始化 ImageVectorizer 类的实例并配置其 Configuration 属性。
    • 使用 ColorsLimit 定义描摹中允许的最大颜色数,以优化图像大小。
    • 连接 BezierPathBuilder ,根据像素轮廓精确构建平滑的曲线。
    • 应用 ImageTraceSmoother 以清晰地平滑粗糙或不规则的边缘。
  2. 调用 Vectorize() 方法,传递源图像的路径以创建活动的 SVGDocument
  3. 使用标准的 Save() 方法将生成的矢量图像保存到文件系统中。

文档中的图像矢量化

可伸缩矢量图形 (SVG) 是目前渲染高质量 Web 图形的标准,因为它们能创建清晰且可适应任何尺寸而不损失质量的图像。要掌握此转换的工作原理,请探索我们的 Vectorization – Basic Overview 指南。


FAQ

1. 如何在 C# 中以编程方式将 Image 图像矢量化?

您可以使用 Aspose.SVG 中的 ImageVectorizer 类来解析 Image 位图并将其转换为 SVG 路径。.NET API 提供对量化算法、路径构建器和平滑配置的直接访问,独立于外部图形软件执行转换。

2. 从光栅到矢量的转换过程中会发生什么?

矢量化分析源位图的扁平 2D 像素阵列,并将其视觉数据重构为数学线条、贝塞尔曲线和几何形状。这将依赖于分辨率的光栅文件转换为通用可扩展的矢量元素。

3. 为什么要在 .NET 应用程序中实现图像矢量化?

将标志、蓝图和技术图表等遗留光栅资产矢量化,可以实现无限缩放而不会降低质量。通过自动化这一过程,开发人员可以直接在其服务器基础架构上动态生成响应式、与分辨率无关的 UI 资产或可供打印的图形。

4. 图像矢量化算法是如何工作的?

矢量化引擎首先应用色彩量化来对相似像素进行分组并减少视觉噪声。接下来,轮廓跟踪算法检测边界区域并从连续像素簇中构建形状。最后,使用样条或贝塞尔曲线节点将这些边界计算为标准化的 SVG <path> 元素。

Aspose.SVG for .NET API 入门

如果您有兴趣开发可扩展矢量图形及其应用程序,请安装我们灵活、高速的 Aspose.SVG for .NET API,其中包含一组强大的 C# 和其他 .NET 编程语言接口。
从命令行安装为 nuget install Aspose.SVG 或通过 Visual Studio 的 Package Manager Console 使用 Install-Package Aspose.SVG 安装。 或者,从 下载 获取离线 MSI 安装程序或 DLL 的 ZIP 文件。Aspose.SVG for .NET API 是一个独立的库,不依赖于任何 SVG 文档处理软件。 有关 C# 库安装和系统要求的更多详细信息,请参阅 Aspose.SVG for .NET 文档

其他支持的矢量化工具

查看这些图像矢量化工具,以节省时间并享受矢量图形的所有优势!

Text to Vector (SVG Text)
Stencil Drawing (Stencil images)
JPG to SVG (JPEG Image)
PNG to SVG (Portable Network Graphics)
Image to SVG (Raster Image)
BMP to SVG (Microsoft Windows Bitmap)
GIF to SVG (Graphical Interchange Format)
TIFF to SVG (Tagged Image File Format)