Преобразование SVGZ в SVG на C#

При работе с векторной графикой важны размер файлов и совместимость. Файлы SVGZ – это сжатые с помощью GZIP версии файлов SVG, что помогает уменьшить их размер. Однако не все инструменты и платформы поддерживают SVGZ. В этой статье показано, как конвертировать SVGZ в стандартный SVG-формат с помощью Aspose.SVG for .NET. Также вы узнаете, как автоматизировать процесс путем сканирования каталогов и пакетного преобразования множества SVGZ-файлов.

О формате SVGZ

Файлы SVGZ – это GZIP-сжатые версии стандартных SVG-документов. Это не другой формат – они просто используют широко распространённый алгоритм GZIP для уменьшения размера SVG-файла. Поскольку SVG основан на XML, такие файлы могут быть довольно громоздкими, особенно при наличии сложных путей, градиентов или встроенных стилей. Это делает их очень хорошо сжимаемыми. Сжатие с помощью GZIP может уменьшить размер SVG-файла на 50–70% в зависимости от сложности содержимого. Такое сжатие особенно полезно для ускорения загрузки и повышения производительности веб-приложений, где критичны размер и пропускная способность. Расширение .svgz указывает, что файл сжат, тогда как несжатая версия сохраняет расширение .svg.

Сохранить SVGZ как SVG

API Aspose.SVG for .NET предоставляет:

Следующий пример демонстрирует простой процесс преобразования одного файла: SVGZ-документ загружается с диска и сохраняется как несжатый SVG. Используя класс SVGDocument и параметр SVGSaveFormat.SVG, вы можете выполнить преобразование всего за несколько строк кода:

1using Aspose.Svg.Saving;
2using System.IO;
3...
4
5    // Загрузка SVG-документа
6	SVGDocument document = new SVGDocument(Path.Combine(DataDir, "shapes.svgz"));
7	
8	// Сохранение документа как SVG
9	document.Save(Path.Combine(OutputDir, "shapes.svg"), SVGSaveFormat.SVG);

Пакетное преобразование SVGZ в SVG

В реальных сценариях, особенно при работе с большими объемами данных, такими как экспортированная графика или архивированные ресурсы, может потребоваться пакетное преобразование нескольких SVGZ-файлов. В таких случаях автоматизация процесса путём сканирования папок будет более эффективной. Следующий пример демонстрирует, как обрабатывать все .svgz файлы в папке, преобразуя их в .svg. Он также показывает, как обрабатывать ошибки для отдельных файлов, чтобы процесс продолжался даже при сбоях:

 1using Aspose.Svg.Saving;
 2using System.IO;
 3using System;
 4...
 5
 6	// Обход всех файлов .svgz в исходной директории
 7	foreach (string svgzFile in Directory.GetFiles(DataDir, "*.svgz"))
 8	{
 9		try
10		{
11			// Получение имени файла без расширения
12			string fileNameWithoutExt = Path.GetFileNameWithoutExtension(svgzFile);
13
14			// Формирование пути вывода с расширением .svg
15			string outputPath = Path.Combine(OutputDir, fileNameWithoutExt + ".svg");
16
17			// Загрузка сжатого файла SVGZ
18			using (SVGDocument document = new SVGDocument(svgzFile))
19			{
20				// Сохранение как стандартный SVG
21				document.Save(outputPath, SVGSaveFormat.SVG);
22			}
23
24			// Регистрация успешного преобразования
25			Console.WriteLine($"Converted: {fileNameWithoutExt}.svgz → {fileNameWithoutExt}.svg");
26		}
27		catch (Exception ex)
28		{
29			// Регистрация ошибок
30			Console.WriteLine($"Failed to convert {svgzFile}: {ex.Message}");
31		}
32	}

SVGZ – ограничения и совместимость

Несмотря на преимущества, формат SVGZ имеет свои ограничения:

Поэтому разработчики часто преобразуют SVGZ в обычный SVG, когда требуется редактировать графику, использовать библиотеки, не поддерживающие сжатие, или вставлять SVG непосредственно в HTML или JavaScript-код.

Технология сжатия Gzip

GZIP (GNU zip) – это популярная технология сжатия и соответствующий формат данных. Он был разработан проектом GNU и стандартизирован в RFC 1952. GZIP используется повсеместно – от архивов с расширением .gz до веб-серверов, которые сжимают HTML, CSS и JavaScript перед отправкой в браузер. GZIP встроен в утилиты вроде gzip и gunzip, а также доступен через библиотеки, такие как zlib.

В основе GZIP лежит алгоритм DEFLATE, который объединяет два подхода: LZ77 – обнаружение повторяющихся шаблонов с заменой на ссылки и Хаффмановское кодирование, сжимающее часто используемые данные. Это обеспечивает эффективное сжатие без потери данных.

Одним из главных преимуществ GZIP является его потоковая природа. Он может сжимать данные в процессе передачи, что делает его идеальным для веб-приложений. А поскольку это без потерь, вы можете быть уверены, что после распаковки данные будут идентичны оригиналу. Поддержка GZIP практически универсальна – её обеспечивают все современные браузеры, ОС и языки программирования.

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

Aspose.SVG предлагает бесплатный онлайн SVG Конвертер для преобразования SVG-файлов в популярные форматы. Преобразуйте SVG в PDF, XPS, JPG, PNG, BMP, TIFF, GIF, WebP и SVGZ. Просто выберите файл, укажите формат и нажмите «Конвертировать» – быстро и бесплатно!

Text “SVG Конвертер”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.