使用 C# 将 SVG 转换为图像、JPG、PNG、BMP、TIFF 和 GIF

在本文中,您将找到有关如何将 SVG 转换为图像文件格式的信息,例如 JPGPNGBMPTIFFGIF。网站开发、平面设计师表演、摄影和其他目的都需要图像文件转换。图像格式的选择取决于您是否以印刷方式打印、通过电子邮件发送或将图像放在网页上。

本文提供了 Aspose.SVG .NET 转换功能的一般描述,并描述了使用 ConverterSVGDocument 类支持的 SVG 到图像转换方案。

在线 SVG 转换器

您可以通过任何方式(在线或以编程方式)将 SVG 转换为图像和其他流行格式。检查 Aspose.SVG API 功能并实时转换 SVG!请从本地文件系统加载 SVG,选择输出格式并运行示例。在示例中,保存选项是默认设置的。您将立即收到作为单独文件的结果。

                
            

如果您想以编程方式将 SVG 转换为图像格式,请参阅以下转换场景和 C# 示例。

将 SVG 转换为 JPG

JPG 是最常用的图像格式之一。其独特之处在于压缩过程中受控的质量损失。因此它被广泛用于通过网络存储和发送图形数字内容(照片、扫描副本、数字化图片)。借助 Aspose.SVG,您可以以编程方式将 SVG 转换为 JPG、SVG 转换为 PNG、SVG 转换为 BMP、SVG 转换为 GIF 或 SVG 转换为 TIFF 格式,并完全控制各种转换参数。

使用 ConvertSVG() 方法

使用 ConvertSVG() 方法是将 SVG 转换为各种流行格式的最常见方法。以下代码片段展示了如何将 SVG 转换为 JPG:

 1using Aspose.Svg;
 2using System.IO;
 3using Aspose.Svg.Saving;
 4using Aspose.Svg.Converters;
 5using Aspose.Svg.Rendering.Image;
 6...
 7
 8	// Initialize an SVG document from a file
 9    using (var document = new SVGDocument(Path.Combine(DataDir, "owl-edited.svg")))
10    {
11        // Initialize ImageSaveOptions 
12        var saveOptions = new ImageSaveOptions(ImageFormat.Jpeg);
13
14        // Convert SVG to JPG
15        Converter.ConvertSVG(document, saveOptions, Path.Combine(OutputDir, "owl-edited.jpg"));
16    }

该图展示了 owl-edited.jpg 文件。

文本“owl-edited.svg 文件渲染为 JPG”

在文章 Navigation & Inspection SVG 中,您可以查看有关如何使用 CSS 选择器编辑原始 owl.svg 文件的 C# 示例。

使用 RenderTo() 方法

考虑如何使用 RenderTo() 方法将文档从 SVG 转换为 JPG:

以下示例演示如何应用 Format 和“SmoothingMode”属性将 SVG 转换为 JPG:

 1using Aspose.Svg;
 2using System.IO;
 3using Aspose.Svg.Rendering;
 4using Aspose.Svg.Rendering.Image;
 5using System.Drawing.Drawing2D;
 6...
 7
 8    // Initialize an SVG document from a file
 9    using (var document = new SVGDocument(Path.Combine(DataDir, "owl.svg")))
10    {
11        // Set Format and SmoothingMode for jpgOptions1
12        var jpegOptions1 = new ImageRenderingOptions(ImageFormat.Jpeg);
13        jpegOptions1.SmoothingMode = SmoothingMode.AntiAlias;
14
15        // Set Format and SmoothingMode for jpgOptions2
16        var jpegOptions2 = new ImageRenderingOptions(ImageFormat.Jpeg);
17        jpegOptions2.SmoothingMode = SmoothingMode.Default;
18
19        // Initialize an instance of the ImageDevice class and specify the output file to render
20        using (IDevice device = new ImageDevice(jpegOptions1, Path.Combine(OutputDir, "owl_out1.jpg")))
21        {
22            // Render SVG to JPG
23            document.RenderTo(device);
24        }
25        using (IDevice device = new ImageDevice(jpegOptions2, Path.Combine(OutputDir, "owl_out2.jpg")))
26        {
27            document.RenderTo(device);
28        }
29    }

ImageRenderingOptions() 构造函数初始化传递给 ImageDevice() 构造函数的 ImageRenderingOptions 类的实例。 ImageDevice(options, file) 构造函数采用 optionsfile 并创建 ImageDevice 类的实例。 RenderTo(device) 方法采用 ImageDevice 类的实例并将 SVG 渲染为 JPG。 ImageRenderingOptions 类提供了许多属性,使您可以完全控制各种参数并改进将 SVG 转换为 JPG 格式的过程。 Format 属性设置图像格式。默认情况下,此属性为“Png”。要将 SVG 转换为 JPG,您必须使用 ImageFormat.Jpeg。

文本“生成的图像片段”

在上面的示例中,我们使用不同的 SmoothingMode 值将 SVG 文件 owl.svg 转换为 JPG。该图展示了缩放(250%)的 JPG 图像片段: a) SmoothingMode 的值为 AntiAlias ; b) SmoothingMode 的值为 Default

您可以从 GitHub 下载完整的示例和数据文件。关于从 GitHub 下载并运行示例,您可以从 如何运行示例 部分找到。

保存选项

Aspose.SVG 允许使用默认或自定义保存选项将 SVG 转换为图像文件格式。 ImageSaveOptions 的使用使您能够自定义渲染过程。例如,您可以指定图像格式、页面大小、边距、背景颜色等。

PropertyDescription
CompressionSets Tagged Image File Format (TIFF) Compression. By default, this property is LZW.
CSSGets a CssOptions object which is used for configuration of CSS properties processing.
FormatSets the ImageFormat (JPG, PNG, BMP, TIFF, or GIF). By default, this property is PNG.
BackgroundColorThis property sets the color that will fill the background. By default, this property is Transparent.
PageSetupThis property gets a page setup object and uses it for configuration output page-set.
HorizontalResolutionSets horizontal resolution for output images in pixels per inch. The default value is 300 dpi.
VerticalResolutionSets vertical resolution for output images in pixels per inch. The default value is 300 dpi.
SmoothingModeThis property sets the rendering quality for this image. Available values are Invalid, Default, HighSpeed, HighQuality, None, and AntiAlias.
TextGets a TextOptions object which is used for configuration of text rendering.

注意:使用 ImageSaveOptions 类实现的选项继承自 ImageRenderingOptions 类。

将 SVG 转换为 PNG

PNG 格式使用无损压缩算法来存储光栅图像。它仅支持 RGB 颜色模型,并不针对图像打印而设计。 PNG广泛用于通过网络传输图片并在网页和云驱动存储库上显示照片和图形。

使用 ConvertSVG() 方法

以下代码片段展示了如何从头开始准备 SVG 文件并将其转换为 PNG:

以下示例显示如何使用 ImageSaveOptions 并使用自定义保存选项将 SVG 转换为 PNG:

 1using Aspose.Svg;
 2using System.IO;
 3using System.Drawing;
 4using Aspose.Svg.Saving;
 5using Aspose.Svg.Converters;
 6...
 7
 8    // Prepare SVG code and save it to a file
 9    var code = "<svg xmlns='https://www.w3.org/2000/svg'>" +
10               "<circle cx='100' cy='150' r='50' stroke='#2F4F4F' stroke-width='4' fill='#FF7F50' />" +
11               "<circle cx='180' cy='200' r='60' stroke='#2F4F4F' stroke-width='4' fill='#008B8B' />" +
12               "</svg>";
13    File.WriteAllText("example.svg", code);
14
15    // Initialize an SVG document from the file
16    using (var document = new SVGDocument("example.svg"))
17    {
18        // Initialize an instance of the ImageSaveOptions class and set the BackgroundColor property
19        var saveOptions = new ImageSaveOptions();
20        saveOptions.BackgroundColor = Color.Gainsboro;
21
22        // Convert SVG to PNG
23        Converter.ConvertSVG(document, saveOptions, Path.Combine(OutputDir, "output.png"));
24    }

在该示例中, ImageSaveOptions() 构造函数初始化传递给 ConvertSVG() 方法的 ImageSaveOptions 类的实例。 ConvertSVG() 方法采用 document、saveOptions 和输出文件路径并执行 SVG 到 PNG 的转换。

注意:我们不指定 Format 属性来转换为 PNG。 ImageSaveOptions() 构造函数将 Png 作为默认图像格式。

使用 RenderTo() 方法

让我们考虑如何使用 RenderTo() 方法将 SVG 转换为 PNG:

 1using Aspose.Svg;
 2using System.IO;
 3using Aspose.Svg.Rendering;
 4using Aspose.Svg.Rendering.Image;
 5...
 6
 7	// Prepare a path to a source SVG file
 8	string documentPath = Path.Combine(DataDir, "snowflake.svg");
 9
10    // Initialize an SVG document from a file
11    using (var document = new SVGDocument(documentPath))
12    {
13        // Create the ImageDevice, set image Format and specify output file to render
14        using (IDevice device = new ImageDevice(new ImageRenderingOptions(), Path.Combine(OutputDir, "snowflake.png")))
15        {
16            // Render SVG to PNG
17            document.RenderTo(device);
18        }
19    }

ImageRenderingOptions() 构造函数初始化传递给 ImageDevice() 构造函数的 ImageRenderingOptions 类的实例。 ImageDevice(options, file) 构造函数采用 optionsfile 并创建 ImageDevice 类的实例。 RenderTo(device) 方法采用 ImageDevice 类的实例并将 SVG 渲染为 PNG。

该图展示了 snowflake.png 文件。

文本“snowflake.svg 文件渲染为 PNG”

将 SVG 转换为 BMP

BMP 图像文件在不进行任何压缩的情况下保存其图像质量并存储每个像素的颜色数据,但大文件大小使它们不适合在网络上使用。这种格式也不适合印前制作,因为它仅限于 RGB。

Aspose.SVG API 可以使用多个阶段将文档从 SVG 转换为 BMP 保存格式:- 打开源 SVG 文档 ( conclusion.svg)。

 1using Aspose.Svg;
 2using System.IO;
 3using Aspose.Svg.Rendering;
 4using Aspose.Svg.Rendering.Image;
 5...
 6
 7    // Open a source SVG document
 8     using (var document = new SVGDocument(Path.Combine(DataDir, "conclusion.svg")))
 9    {
10       // Create ImageDevice, set image Format and specify the output file to render
11       using (IDevice device = new ImageDevice(new ImageRenderingOptions(ImageFormat.Bmp), Path.Combine(OutputDir, "conclusion_out.bmp")))
12       {
13           // Render SVG to BMP
14    	   document.RenderTo(device);
15       }
16    }

ImageRenderingOptions() 构造函数初始化传递给 ImageDevice() 构造函数的 ImageRenderingOptions 类的实例。 ImageDevice(options, file) 构造函数采用 optionsfile 并创建 ImageDevice 类的实例。 RenderTo(device) 方法采用 ImageDevice 类的实例并将 SVG 渲染为 BMP。

将 SVG 转换为 TIFF

TIFF 是一种用于存储具有多种颜色的光栅图形图像的格式。扫描、传真、文字处理、光学字符识别、图像处理和页面布局应用程序支持 TIFF。它广泛用于印刷和杂志胶印。

Aspose.SVG API 可以使用多个阶段将文档从 SVG 转换为 TIFF 保存格式:

 1using Aspose.Svg;
 2using System.IO;
 3using Aspose.Svg.Rendering;
 4using Aspose.Svg.Rendering.Image;
 5...
 6
 7    // Open a source SVG document
 8    using (var document = new SVGDocument(Path.Combine(DataDir, "conclusion.svg")))
 9    {
10        // Initialize an instance of the ImageRenderingOptions class and set Format and Compression properties
11        var tiffOptions = new ImageRenderingOptions(ImageFormat.Tiff);
12        tiffOptions.Compression = Compression.None;
13
14        // Initialize an instance of the ImageDevice class and specify the output file to render
15        using (IDevice device = new ImageDevice(tiffOptions, Path.Combine(OutputDir, "conclusion.tiff")))
16        {
17            // Render SVG to TIFF
18            document.RenderTo(device);
19        }
20    }

ImageRenderingOptions() 构造函数初始化传递给 ImageDevice() 构造函数的 ImageRenderingOptions 类的实例。 ImageDevice(options, file) 构造函数采用 optionsfile 并创建 ImageDevice 类的实例。 RenderTo(device) 方法采用 ImageDevice 类的实例并将 SVG 渲染为 TIFF。

ImageRenderingOptions 类提供了许多属性,使您可以完全控制各种参数并改进将 SVG 转换为 TIFF 格式的过程。例如,Compression 属性允许设置 TIFF 文件格式的压缩。在上面的示例中,我们放置了 Compression.None。

将 SVG 转换为 GIF

GIF 是一种流行的图像格式,支持动画图像,经常用于网络发布。以下代码片段展示了如何使用 Aspose.SVG for .NET API 将 SVG 转换为 GIF:

以下示例演示如何使用 ImageSaveOptions 并使用自定义“PageSetup”特征创建输出图像:

 1using Aspose.Svg;
 2using System.IO;
 3using Aspose.Svg.Drawing;
 4using Aspose.Svg.Saving;
 5using Aspose.Svg.Converters;
 6using Aspose.Svg.Rendering.Image;
 7...
 8
 9    // Initialize an SVG document from a file
10    using (var document = new SVGDocument(Path.Combine(DataDir, "owl.svg")))
11    {
12        // Initialize an instance of the ImageSaveOptions class and set PageSetup property
13        var saveOptions = new ImageSaveOptions(ImageFormat.Gif);
14        saveOptions.PageSetup.AnyPage = new Page(new Drawing.Size(400, 600), new Margin(20, 20, 20, 20));
15        
16        // Convert SVG to GIF
17        Converter.ConvertSVG(document, saveOptions, Path.Combine(OutputDir, "owl.gif"));
18    }

您可以尝试我们的免费在线 SVG 到 JPG 转换器,它的工作质量高,简单且快速。只需上传、转换文件即可在几秒钟内获得结果!

文本“横幅 SVG 到 JPG 转换器”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.