Конвертировать изображения в SVG на C# – векторизация JPG, PNG, BMP, TIFF, GIF и ICO

Векторизация – это процесс преобразования растровых изображений в векторную графику, в которой используются такие элементы, как кривые Безье, сплайны и линии. Процесс включает в себя как минимум квантование цвета, определение границ одноцветных фигур и их аппроксимацию кривыми Безье или многоугольниками, а также улучшение качества контура за счет подавления шума. Результат сохраняется в векторном формате изображения, например, в файле SVG.

Aspose.SVG for .NET предоставляет два мощных подхода для преобразования растровых изображений в формат SVG с помощью векторизации:

В этой статье рассматриваются основные понятия и примеры преобразования растровых изображений, таких как JPG, PNG, BMP, TIFF, GIF и ICO в SVG графику с помощью методов Converter.ConvertImageToSVG().

Чтобы узнать больше о том, как преобразовывать изображения в векторную графику с помощью API ImageVectorization, обратитесь к главе Векторизация изображений и текста. Вы найдете описание процесса векторизации изображения, применение алгоритмов и параметров векторизации, а также C# примеры использования методов Vectorize().

Конвертировать изображения в SVG

Преобразование растровых изображений в SVG позволяет создавать масштабируемую, не зависящую от разрешения графику, которая остается четкой при любом размере, что делает ее идеальной для веб-дизайна и других приложений. В следующем примере показано, как преобразовать растровое PNG изображение в SVG с помощью метода ConvertImageToSVG():

Добавьте следующие пространства имен:

1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Converters;
4using Aspose.Svg.ImageVectorization;

Реализация преобразования изображения в SVG:

 1// Convert Image to SVG using C#
 2
 3// Prepare paths for a source image file and output SVG file
 4string imageFile = Path.Combine(DataDir, "flower-pink.png");
 5string outputFile = Path.Combine(OutputDir, "flower-pink.svg");
 6
 7// Create a configuration object
 8ImageVectorizerConfiguration configuration = new ImageVectorizerConfiguration
 9{
10    PathBuilder =
11                new BezierPathBuilder
12                {
13                    TraceSmoother = new ImageTraceSmoother(3),
14                    ErrorThreshold = 5,
15                    MaxIterations = 5
16                },
17    ColorsLimit = 15,
18    LineWidth = 2
19};
20
21// Convert Image to SVG
22Converter.ConvertImageToSVG(configuration, imageFile, outputFile);

На рисунке показан результат векторизации изображения: а) исходное PNG-изображение; б) полученное SVG:

Текст “Результат преобразования изображения в SVG – исходное PNG-изображение (a) и преобразованное SVG (b)”

Параметры векторизации

Чтобы получить оптимальные результаты, можно поэкспериментировать с различными параметрами конфигурации. Например, более низкий предел цвета и более высокое сглаживание создают более абстрактное и стилизованное изображение, в то время как более высокие настройки точности сохраняют больше деталей за счет сложности.

Некоторые свойства класса ImageVectorizerConfiguration:

Свойства класса BezierPathBuilder:

Конвертировать изображения из потока в SVG

Aspose.SVG for .NET поддерживает как файловые, так и потоковые рабочие процессы, что делает его гибким для настольных, веб- и сервис-ориентированных приложений. В следующем примере показано, как применить метод ConvertImageToSVG(configuration, inputStream, outputFile) для преобразования JPG изображения в SVG:

 1// Convert raster image JPG to vector SVG using C#
 2
 3// Prepare input and output
 4string imagePath = Path.Combine(DataDir, "tulip.jpg");
 5string outputFile = Path.Combine(OutputDir, "tulip.svg");
 6
 7// Open the image as a FileStream
 8using (FileStream inputStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
 9{
10    // Create vectorization configuration
11    ImageVectorizerConfiguration configuration = new ImageVectorizerConfiguration
12    {
13        PathBuilder = new BezierPathBuilder
14        {
15            TraceSmoother = new ImageTraceSmoother(1),
16            ErrorThreshold = 10,
17            MaxIterations = 1
18        },
19        ColorsLimit = 30,
20        LineWidth = 1
21    };
22
23    // Perform conversion from image stream to SVG
24    Converter.ConvertImageToSVG(configuration, inputStream, outputFile);
25}
26
27Console.WriteLine("Image converted to SVG successfully.");

На рисунке показан результат векторизации изображения: а) исходное JPG-изображение; б) полученное SVG:

Текст “Результат преобразования изображения в SVG – исходное JPG-изображение (a) и преобразованное SVG (b)”

Выводы и рекомендации

  1. Используйте методы ConvertImageToSVG() для быстрого преобразования растровых изображений в SVG с использованием пользовательских настроек.
  2. Используйте следующие рекомендации, чтобы добиться наилучших результатов и производительности:
  1. Используйте потоковый ввод при обработке загруженных файлов, изображений в памяти или облачных данных – это позволяет избежать временных файлов и повысить производительность.
  2. Для больших массивов данных создайте цикл для пакетного преобразования изображений с обработкой ошибок и ведением журнала.
  3. Всегда открывайте и проверяйте полученные SVG в браузере или векторном редакторе, чтобы убедиться в качестве.

Смотрите также

Aspose.SVG предлагает бесплатный онлайн Image в SVG Конвертер, который работает на любой платформе и обеспечивает точное и эффективное преобразование. Используя это приложение, вы можете применить набор опций для достижения идеального результата. Сэкономьте свое время и воспользуйтесь бесплатным конвертером изображений в SVG, чтобы получить все преимущества векторной графики!

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.