Конвертировать изображения в 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, чтобы получить все преимущества векторной графики!

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.