Конвертировать изображения в SVG на C# – векторизация JPG, PNG, BMP, TIFF, GIF и ICO
Векторизация – это процесс преобразования растровых изображений в векторную графику, в которой используются такие элементы, как кривые Безье, сплайны и линии. Процесс включает в себя как минимум квантование цвета, определение границ одноцветных фигур и их аппроксимацию кривыми Безье или многоугольниками, а также улучшение качества контура за счет подавления шума. Результат сохраняется в векторном формате изображения, например, в файле SVG.
Aspose.SVG for .NET предоставляет два мощных подхода для преобразования растровых изображений в формат SVG с помощью векторизации:
- Методы ConvertImageToSVG() класса Converter – это быстрый и простой способ векторизации изображений с помощью настроек конфигурации.
- Пространство имен ImageVectorization включает в себя классы и интерфейсы для реализации большего контроля над процессом векторизации.
В этой статье рассматриваются основные понятия и примеры преобразования растровых изображений, таких как JPG, PNG, BMP, TIFF, GIF и ICO в SVG графику с помощью методов Converter.ConvertImageToSVG()
.
Чтобы узнать больше о том, как преобразовывать изображения в векторную графику с помощью API ImageVectorization, обратитесь к главе Векторизация изображений и текста. Вы найдете описание процесса векторизации изображения, применение алгоритмов и параметров векторизации, а также C# примеры использования методов Vectorize().
Конвертировать изображения в SVG
Преобразование растровых изображений в SVG позволяет создавать масштабируемую, не зависящую от разрешения графику, которая остается четкой при любом размере, что делает ее идеальной для веб-дизайна и других приложений. В следующем примере показано, как преобразовать растровое PNG изображение в SVG с помощью метода ConvertImageToSVG()
:
- Процесс преобразования начинается с создания объекта ImageVectorizerConfiguration. Эта конфигурация управляет процессом векторизации, включая количество сохраняемых цветов, уровень применяемого сглаживания и метод, используемый для обводки контуров.
- Mетод
ConvertImageToSVG(
configuration, imageFile, outputFile
) выполняет векторизацию исходного изображения, преобразуя его в масштабируемый формат SVG и сохраняя по указанному пути.
Добавьте следующие пространства имен:
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:
Параметры векторизации
Чтобы получить оптимальные результаты, можно поэкспериментировать с различными параметрами конфигурации. Например, более низкий предел цвета и более высокое сглаживание создают более абстрактное и стилизованное изображение, в то время как более высокие настройки точности сохраняют больше деталей за счет сложности.
Некоторые свойства класса ImageVectorizerConfiguration:
ColorsLimit
– устанавливает максимальное количество цветов, используемых для квантования изображения. Уменьшение его значения упрощает вывод и уменьшает размер файла.LineWidth
– управляет визуальной толщиной трассируемых краев.
Свойства класса BezierPathBuilder:
TraceSmoother
– регулирует уровень сглаживания для кривых и линий.ErrorThreshold
иMaxIterations
– эти параметры влияют на точность и производительность пути.
Конвертировать изображения из потока в 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:
Выводы и рекомендации
- Используйте методы
ConvertImageToSVG()
для быстрого преобразования растровых изображений в SVG с использованием пользовательских настроек. - Используйте следующие рекомендации, чтобы добиться наилучших результатов и производительности:
- Оптимизируйте исходные изображения перед конвертированием: используйте контрастные цвета, чтобы конвертер мог определить четкие границы; измените размер больших изображений, чтобы ускорить обработку и улучшить качество.
- Выберите правильные настройки
ImageVectorizerConfiguration
. Даже при значениях по умолчанию преобразование дает хороший результат SVG. Однако тонкая настройка этих параметров часто необходима для достижения желаемого баланса между точностью и простотой.
- Используйте потоковый ввод при обработке загруженных файлов, изображений в памяти или облачных данных – это позволяет избежать временных файлов и повысить производительность.
- Для больших массивов данных создайте цикл для пакетного преобразования изображений с обработкой ошибок и ведением журнала.
- Всегда открывайте и проверяйте полученные SVG в браузере или векторном редакторе, чтобы убедиться в качестве.
Смотрите также
- Если вы хотите узнать, как создавать векторные трафареты из растровых изображений с помощью C#, обратитесь к статье Трафарет изображения – как создать на C#.
- Вы можете использовать веб-приложение Рисование трафарета для создания векторных трафаретов из изображений.
- В статье Рабочий процесс векторизации изображения вы узнаете, как работает процесс векторизации изображений, как применять алгоритмы векторизации и параметры настройки, а также как преобразовывать растровые изображения PNG, JPG, BMP, TIFF, GIF и ICO в масштабируемые документы SVG с помощью класса ImageVectorizer.
Aspose.SVG предлагает бесплатный онлайн Image в SVG Конвертер, который работает на любой платформе и обеспечивает точное и эффективное преобразование. Используя это приложение, вы можете применить набор опций для достижения идеального результата. Сэкономьте свое время и воспользуйтесь бесплатным конвертером изображений в SVG, чтобы получить все преимущества векторной графики!