使用 C# 将 SVGZ 转换为 SVG

在处理矢量图形时,文件大小和兼容性通常是关键因素。SVGZ 文件是通过 GZIP 压缩的 SVG 文件,有助于减小文件体积。然而,并非所有工具或平台都支持该格式。本文将演示如何使用 Aspose.SVG for .NET 将 SVGZ 文件转换为标准 SVG 格式。同时,您还将学习如何通过扫描目录实现批量自动转换多个 SVGZ 文件。这种转换使开发者能够处理未压缩、可编辑的 SVG 内容。

关于 SVGZ 文件格式

SVGZ 是标准 SVG 文件经过 GZIP 压缩后的版本。它不是一种全新的格式,仅仅是使用广泛的 GZIP 算法来压缩 SVG 文件。由于 SVG 是基于 XML 的,它可能包含大量的路径、渐变和内联样式,从而使文件变得庞大且冗长,因此非常适合压缩。根据图形复杂程度不同,压缩可将文件体积减少 50–70%。在对加载速度和带宽要求较高的 Web 应用中,这种压缩尤其有用。.svgz 扩展名表示该文件是压缩的,而未压缩版本则保留 .svg 扩展名。

将 SVGZ 文档保存为 SVG

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

在实际应用中,特别是面对大量图形资源(例如导出的图像或归档的 Web 内容)时,通常需要一次性转换多个 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 文件有诸多优点,但使用时仍需注意以下几点:

因此,当需要编辑图形、使用不支持压缩输入的库、或将 SVG 内联嵌入到 HTML/JavaScript 中时,开发者通常会将 SVGZ 文件转换回标准 SVG 格式。

Gzip 压缩技术简介

GZIP(GNU zip) 是一种广泛使用的数据压缩技术和文件格式。它由 GNU 项目推出,并在 RFC 1952 中标准化。GZIP 应用于各种场景:.gz 文件、Web 服务器压缩 HTML/CSS/JS 文件等。它被集成在 gzipgunzip 等工具中,也可通过 zlib 等库使用。

GZIP 使用的 DEFLATE 算法 结合了两种方法: LZ77(查找重复模式并用引用替代)和 哈夫曼编码(进一步压缩常见数据)。这种组合能够在不丢失任何数据的情况下有效减小文件大小。

GZIP 的一大优势在于它是流式压缩的,也就是说可以在数据传输过程中进行实时压缩,特别适合 Web 应用。同时,GZIP 是无损压缩,确保解压后还原为原始数据。最重要的是,它几乎被所有浏览器、操作系统和开发语言广泛支持。

相关阅读

Aspose.SVG 提供免费的 SVG 在线转换工具,可将 SVG 文件转换为 PDF、XPS、JPG、PNG、BMP、TIFF、GIF、WebP 和 SVGZ 等格式。选择文件,选择格式,点击转换,即可完成操作——快捷、免费!

文字 “SVG 在线转换工具”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.