使用 C# 将 SVG 转换为图像、JPG、PNG、BMP、TIFF 和 GIF
在本文中,您将找到有关如何将 SVG 转换为图像文件格式的信息,例如 JPG、PNG、BMP、TIFF和 GIF。网站开发、平面设计师表演、摄影和其他目的都需要图像文件转换。图像格式的选择取决于您是否以印刷方式打印、通过电子邮件发送或将图像放在网页上。
本文提供了 Aspose.SVG .NET 转换功能的一般描述,并描述了使用 Converter 和 SVGDocument 类支持的 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:
- 打开源 SVG 文档 ( owl-edited.svg)。
- 创建 ImageSaveOptions 类的实例。
- 使用 ConvertSVG() 方法将 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 文件。
在文章 Navigation & Inspection SVG 中,您可以查看有关如何使用 CSS 选择器编辑原始 owl.svg 文件的 C# 示例。
使用 RenderTo() 方法
考虑如何使用 RenderTo() 方法将文档从 SVG 转换为 JPG:
- 打开源 SVG 文档 ( owl.svg)。
- 使用 ImageRenderingOptions() 构造函数并指定文档的渲染选项。
- 创建 ImageDevice 类的新实例 – 输出设备。
- 通过 RenderTo() 方法转换文档。
以下示例演示如何应用 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
) 构造函数采用 options
、file
并创建 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
。
保存选项
Aspose.SVG 允许使用默认或自定义保存选项将 SVG 转换为图像文件格式。 ImageSaveOptions 的使用使您能够自定义渲染过程。例如,您可以指定图像格式、页面大小、边距、背景颜色等。
Property | Description |
---|---|
Compression | Sets Tagged Image File Format (TIFF) Compression. By default, this property is LZW. |
CSS | Gets a CssOptions object which is used for configuration of CSS properties processing. |
Format | Sets the ImageFormat (JPG, PNG, BMP, TIFF, or GIF). By default, this property is PNG. |
BackgroundColor | This property sets the color that will fill the background. By default, this property is Transparent. |
PageSetup | This property gets a page setup object and uses it for configuration output page-set. |
HorizontalResolution | Sets horizontal resolution for output images in pixels per inch. The default value is 300 dpi. |
VerticalResolution | Sets vertical resolution for output images in pixels per inch. The default value is 300 dpi. |
SmoothingMode | This property sets the rendering quality for this image. Available values are Invalid, Default, HighSpeed, HighQuality, None, and AntiAlias. |
Text | Gets a TextOptions object which is used for configuration of text rendering. |
注意:使用 ImageSaveOptions 类实现的选项继承自 ImageRenderingOptions 类。
将 SVG 转换为 PNG
PNG 格式使用无损压缩算法来存储光栅图像。它仅支持 RGB 颜色模型,并不针对图像打印而设计。 PNG广泛用于通过网络传输图片并在网页和云驱动存储库上显示照片和图形。
使用 ConvertSVG() 方法
以下代码片段展示了如何从头开始准备 SVG 文件并将其转换为 PNG:
- 准备 SVG 代码并将其保存到文件中。
- 创建 ImageSaveOptions 类的实例。
- 使用 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='http://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:
- 使用 SVGDocument() 构造函数之一 ( snowflake.svg) 初始化文档。
- 生成 ImageRenderingOptions 类的实例。
- 创建 ImageDevice 类的新实例。
- 使用
RenderTo(
device
) 方法将 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
) 构造函数采用 options
、 file
并创建 ImageDevice 类的实例。
RenderTo(device
) 方法采用 ImageDevice 类的实例并将 SVG 渲染为 PNG。
该图展示了 snowflake.png 文件。
将 SVG 转换为 BMP
BMP 图像文件在不进行任何压缩的情况下保存其图像质量并存储每个像素的颜色数据,但大文件大小使它们不适合在网络上使用。这种格式也不适合印前制作,因为它仅限于 RGB。
Aspose.SVG API 可以使用多个阶段将文档从 SVG 转换为 BMP 保存格式:- 打开源 SVG 文档 ( conclusion.svg)。
- 使用 ImageRenderingOptions() 构造函数并指定文档的 Format 属性。
- 创建 ImageDevice 类的新实例。
- 通过 RenderTo() 方法转换文档。
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
) 构造函数采用 options
、 file
并创建 ImageDevice 类的实例。
RenderTo(device
) 方法采用 ImageDevice 类的实例并将 SVG 渲染为 BMP。
将 SVG 转换为 TIFF
TIFF 是一种用于存储具有多种颜色的光栅图形图像的格式。扫描、传真、文字处理、光学字符识别、图像处理和页面布局应用程序支持 TIFF。它广泛用于印刷和杂志胶印。
Aspose.SVG API 可以使用多个阶段将文档从 SVG 转换为 TIFF 保存格式:
- 打开源 SVG 文档 ( conclusion.svg)。
- 使用 ImageRenderingOptions() 构造函数并指定 Format 和文档的其他属性。
- 创建 ImageDevice 类的新实例。
- 通过 RenderTo() 方法转换文档。
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
) 构造函数采用 options
、file
并创建 ImageDevice 类的实例。
RenderTo(device
) 方法采用 ImageDevice 类的实例并将 SVG 渲染为 TIFF。
ImageRenderingOptions 类提供了许多属性,使您可以完全控制各种参数并改进将 SVG 转换为 TIFF 格式的过程。例如,Compression 属性允许设置 TIFF 文件格式的压缩。在上面的示例中,我们放置了 Compression.None。
将 SVG 转换为 GIF
GIF 是一种流行的图像格式,支持动画图像,经常用于网络发布。以下代码片段展示了如何使用 Aspose.SVG for .NET API 将 SVG 转换为 GIF:
- 打开源 SVG 文档 ( owl.svg)。
- 创建 ImageSaveOptions 类的实例并指定 Format 和其他保存选项。
- 使用 ConvertSVG() 方法将 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 转换器,它的工作质量高,简单且快速。只需上传、转换文件即可在几秒钟内获得结果!