图像矢量化 - C# 代码和在线矢量化器

你准备好继续矢量绘图了吗?

什么是图像矢量化?

图像矢量化是将位图图像转换为矢量图形的过程 - 贝塞尔曲线、样条曲线和直线。矢量化很有帮助,因为放大图像时图像不会像素化。缩放而不损失质量、小文件大小和动画支持 - 只是矢量化图像的几个优点。无论您是从事绘画、设计、艺术、印刷、建筑还是网络开发,矢量图都是该专业的重要组成部分。另一方面,您可以尝试图像并获得一些有趣的矢量化效果。在本文中,我们将了解如何在 C# 中或使用在线 Image Vectorizer 将 Image 转换为矢量图形。


在线图像矢量化器

你准备好从用像素绘画到用矢量绘画了吗? Image Vectorizer 旨在将光栅图像转换为基于由贝塞尔曲线和线条组成的几何形状的矢量图形。矢量化后,所有矢量图形元素都保存为 SVG 文件。 Image Vectorizer 支持 JPEG、JPG、PJP、PJPEG、PNG、BMP、ICO、GIF、TIFF、WEBP、XBM 等位图格式。您可以使用与适当的矢量化选项链接的控件以交互方式管理矢量化 SVG 文件。立即将您的图像转换为可缩放且清晰的矢量艺术!


如何使用图像矢量化器?

  1. 首先,从本地文件系统加载 JPEG、JPG、PJP、PJPEG、WEBP、PNG、BMP、ICO、GIF、TIFF、XBM 或其他位图格式的光栅图像。您将看到三个窗口 - 源、量化和矢量化 - 带有初始、颜色量化和矢量化图像的预览。
  2. Image Vectorizer 使用默认设置将 Image 转换为矢量,您可以将矢量化的 Image 下载为 SVG 文件。但是为了获得更好的结果,您可以使用两个设置侧边栏来处理量化和矢量化过程。单击 “Quantize” 按钮应用量化设置,单击 “Vectorize” 按钮应用矢量化设置并将 Image 转换为 SVG。
  3. 点击 “Download” 按钮获取结果。

Image Vectorizer 将光栅位图图像转换为由轮廓构成的矢量图。矢量化算法包括以下步骤:颜色量化、轮廓跟踪、轨迹平滑、轨迹简化以及从轨迹构建 SVG 路径元素。应用自定义设置以获得最佳的 Image 矢量化结果。

量化侧边栏

颜色量化是选择有限数量的颜色以在图像中使用的过程。当要减少图像的颜色信息时应用它。颜色量化是一个非常复杂的过程,涉及许多因素。这可以使用不同的算法来实现。每个算法都确定较大颜色集中的哪些颜色保留在新图像中,以及丢弃的颜色如何映射到剩余的颜色。

  • colors - 所需的调色板大小;
  • method - 实现各种颜色量化算法的直方图方法;
  • minHueCols - 是一个适用于颜色渐变的参数;
  • scale - 或调整比例因子以对平面中的颜色进行更精细或更粗糙的采样;
  • grayscale - 您可以通过单击复选框将图像转换为灰度。

矢量化侧边栏

  • threshold - 负责设置标记轮廓的像素数;
  • severity - 影响轮廓的平滑并确定查询点最近邻方法所考虑的区域范围。
  • line-width - 影响用于标记轮廓的线条宽度;
  • stencil - 将普通图像或照片转换为轮廓图像,可用作涂鸦效果的模板;
  • trace paths - 您可以查看曲线中负责构建路径段的点。

矢量图形是创建徽标、图标、页面布局、地图、图表、线条艺术、插图、技术图纸等的最佳选择。对于具有混合颜色或编辑照片的连续色调图像,它不是最合适的格式。但是,矢量化照片可以产生令人印象深刻的艺术效果,这些效果可能有趣且有用。

如何在 C# 中矢量化图像

Aspose.SVG for .NET API 提供了一个高速 C# 库,可用于不同的 SVG 解析任务. ImageVectorization 命名空间包括用于实现图像矢量化过程的类和接口,并在保存图像之前使用各种预处理选项矢量格式。处理涉及控制以下矢量化选项:TraceSimplifier、TraceSmoother、PathBuilder 等。


C# 中的图像矢量化

	// Initialize an instance of the ImageVectorizer class
    var vectorizer = new ImageVectorizer
    {
        Configuration = 
		{
			// Set severity
			TraceSmoother =   new ImageTraceSmoother(3),
			// Set tolerance
			TraceSimplifier = new ImageTraceSimplifier(0.3f),
			// Set tension
        	PathBuilder = new PathBuilder(0.5f),
		}
    };
    // Vectorize image from the specified file
	using var document = vectorizer.Vectorize(InputFolder + "image.png");
    // Save vectorized Image as SVG file 
	document.Save(OutputFolder + "image.svg");

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

  1. 初始化 ImageVectorizer 类的一个实例。使用 ImageVectorizer() 构造函数之一并指定配置属性。
    • TraceSmoother 属性设置跟踪更平滑。它用于平滑轮廓的碎片。
    • TraceSimplifier 属性设置跟踪简化。因此,轨迹曲线将由具有更少(或更大)点的线段组成。
    • PathBuilder 属性设置 SVG 路径段构建器并影响曲线在控制点处弯曲的剧烈程度。
  2. 从指定文件矢量化图像。 Vectorize() 方法获取图像文件的路径并返回一个 SVGDocument。
  3. 将矢量化图像保存为 SVG 文件。使用 Save() 方法并将输出路径传递给它。

文档中的图像矢量化

Scalable Vector Graphics 目前广泛用于渲染 Web 图形。与位图相比,矢量图形可以创建缩放到任何大小的清晰图像,它们非常适合绘制任何类型的 Web 插图,包括图标、图表、图表等。在文档章节 Vectorization - Basic Overview, 您将找到对图像矢量化过程。

  • 图像矢量化工作流程 - 您将找到图像矢量化信息,图像矢量化过程和矢量化选项的描述,了解如何将光栅图像(例如 PNG、JPG、BMP、TIFF、GIF、ICO)矢量化为 SVG 文档。
  • 图像矢量化示例 - 您将考虑一些 C# 示例演示 ImageVectorization 功能和配置属性对矢量化结果的影响。

常问问题

1. 如何矢量化 Image?

Aspose.SVG 允许您以任何方式将 Image 转换为 SVG - 在线或以编程方式。例如,您可以使用在线 Image Vectorizer 实时对 Image 进行矢量化,它可以快速且高质量地转换您的图像。另一方面,您可以使用 Aspose.SVG for .NET API 以编程方式对 Image 进行矢量化。

2. 图像矢量化有什么用?

矢量图像对于任何使用绘图、图形或草图的专业人士来说都是必不可少的。许多设计师、印刷商、建筑师和艺术家经常选择使用草图或绘图作为矢量图。他们有充分的理由!与位图图形不同,矢量图可以调整大小和可扩展性而不会损失任何质量,并且它们仍然可以清晰地显示。此外,矢量化可用于更新或恢复图像。
矢量图像是您制作横幅、徽标、地图、标志、刺绣、雕刻、图表、蓝图等所需的。

.NET SVG API 入门

从命令行安装为 nuget install Aspose.SVG 或通过 Visual Studio 的 Package Manager Console 使用 Install-Package Aspose.SVG 安装。 或者,从 下载 获取离线 MSI 安装程序或 DLL 的 ZIP 文件。用于 .NET API 的 Aspose.SVG 是一个独立库,不依赖于任何用于 SVG 文档处理的软件。 有关 C# 库安装和系统要求的更多详细信息,请参阅 Aspose.SVG 文档

其他支持的矢量化器

节省您的时间并检查这些图像矢量化器以获得矢量图形的所有好处!

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)
TIF to SVG (Tagged Image File Format)
ICO to SVG (Windows Icon)