Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
要在 C# 中将 SVG 转为 PNG、JPG、WebP、BMP、TIFF 或 GIF,请使用
SVGDocument 加载 SVG,配置
ImageSaveOptions,在需要时设置输出 Format,然后调用
Converter.ConvertSVG()。当您需要显式渲染控制时,请使用 RenderTo() 和
ImageDevice。
本文介绍如何将 SVG 转换为 JPG、PNG、WebP、BMP、TIFF 和 GIF 等图像文件格式。图像文件转换常用于网站开发、图形设计、摄影和其他场景。选择哪种图像格式取决于图像将用于印刷、电子邮件发送,还是放到网页中。
本文概述 Aspose.SVG for .NET 的转换功能,并说明如何使用 Converter 和 SVGDocument 类完成 SVG 到图像的转换。完整的转换路线图请参阅 在 C# 中转换 SVG 文件 和 支持的文件格式。
Aspose.SVG for .NET 支持直接转换和基于渲染设备的工作流。两种方法都可以生成 raster 输出,但适合不同的应用程序设计。
| 场景 | 推荐 API | 使用原因 |
|---|---|---|
| 将 SVG 文件、stream、URL 或文档转换为图像 | Converter.ConvertSVG() 和 ImageSaveOptions | 这是常见 SVG 到 PNG、JPG、WebP、BMP、TIFF 或 GIF 转换的默认选择。 |
| 通过图像设备渲染已有文档 | SVGDocument.RenderTo() 和 ImageDevice、ImageRenderingOptions | 当应用程序已控制渲染设备或需要显式渲染设置时很有用。 |
| 设置图像格式、背景、页面大小、分辨率、抗锯齿或 TIFF 压缩 | ImageSaveOptions 或 ImageRenderingOptions | 这些选项可在不修改源 SVG 的情况下控制 raster 输出。 |
| 在 Web、批处理或云工作流中转换 SVG | SVGDocument 加基于 stream 的输入和输出 | 有助于避免不必要的临时文件,并让错误处理更容易。 |
| 输出格式 | 最适合 | 说明 |
|---|---|---|
| PNG | 图标、UI 图形、截图、需要透明度的图形 | 无损输出和透明背景是选择 PNG 的常见原因。 |
| JPG/JPEG | 照片或包含嵌入式照片图像的 SVG 内容 | 不保留透明度;转换透明 SVG 内容时请设置 BackgroundColor。请参阅
更改 SVG 背景颜色。 |
| WebP | 偏好较小 raster 文件的 Web 交付 | 当消费环境支持 WebP 时,适合面向 Web 的输出。 |
| BMP | 简单的未压缩 raster 输出 | 文件通常很大,很少是 Web 交付的最佳选择。 |
| TIFF | 打印、扫描、归档和多工具出版工作流 | 当文件大小重要时,请使用压缩设置。 |
| GIF | 简单索引色输出和旧式 Web 工作流 | 它不是 SVG 动画渲染的替代方案;当下游系统要求 GIF 时使用。 |
您可以在线或通过编程方式将 SVG 转换为图像和其他常用格式。试用 Aspose.SVG API 功能并实时转换 SVG。请从本地文件系统加载 SVG,选择输出格式并运行示例。在示例中,保存选项使用默认设置。您会立即得到单独文件形式的结果。
如果您想通过编程方式将 SVG 转换为图像格式,请参阅以下转换场景和 C# 示例。
JPG 是最常用的图像格式之一。它的特点是在压缩过程中可以控制质量损失,因此广泛用于存储和通过 Web 发送数字图形内容,例如照片、扫描副本和数字化图片。使用 Aspose.SVG,您可以通过编程方式将 SVG 转为 JPG、PNG、BMP、GIF 或 TIFF,并完全控制大量转换参数。
使用 ConvertSVG() 方法是将 SVG 转换为各种常用格式的最常见方式。以下代码片段展示如何将 SVG 转为 JPG:
1using System.IO;
2using Aspose.Svg.Saving;
3using Aspose.Svg.Converters;
4using Aspose.Svg.Rendering.Image; 1// Convert SVG to JPG in C# using ImageSaveOptions
2
3// Initialize an SVG document from a file
4using (SVGDocument document = new SVGDocument(Path.Combine(DataDir, "owl-edited.svg")))
5{
6 // Initialize ImageSaveOptions
7 ImageSaveOptions saveOptions = new ImageSaveOptions(ImageFormat.Jpeg);
8
9 // Convert SVG to JPG
10 Converter.ConvertSVG(document, saveOptions, Path.Combine(OutputDir, "owl-edited.jpg"));
11}下图展示 owl-edited.jpg 文件。

在 使用 CSS 选择器编辑 SVG 一文中,您可以看到如何用 CSS 选择器编辑原始 owl.svg 文件的 C# 示例。
下面看看如何使用 RenderTo() 方法将文档从 SVG 转换为 JPG:
以下示例展示如何为 SVG 到 JPG 转换应用 Format 和 UseAntialiasing 属性:
1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Rendering;
4using Aspose.Svg.Rendering.Image; 1// Render SVG to JPEG in C# with and without antialiasing
2
3// Initialize an SVG document from a file
4using (SVGDocument document = new SVGDocument(Path.Combine(DataDir, "owl.svg")))
5{
6 // Set Format and UseAntialiasing for jpgOptions1
7 ImageRenderingOptions jpegOptions1 = new ImageRenderingOptions(ImageFormat.Jpeg);
8 jpegOptions1.UseAntialiasing = true;
9
10 // Set Format and UseAntialiasing for jpgOptions2
11 ImageRenderingOptions jpegOptions2 = new ImageRenderingOptions(ImageFormat.Jpeg);
12 jpegOptions2.UseAntialiasing = false;
13
14 // Initialize an instance of the ImageDevice class
15 using (IDevice device = new ImageDevice(jpegOptions1, Path.Combine(OutputDir, "owl_out1.jpg")))
16 {
17 // Render SVG to JPG
18 document.RenderTo(device);
19 }
20 using (IDevice device = new ImageDevice(jpegOptions2, Path.Combine(OutputDir, "owl_out2.jpg")))
21 {
22 document.RenderTo(device);
23 }
24}ImageRenderingOptions() 构造函数会初始化 ImageRenderingOptions 类的实例,并将其传递给
ImageDevice() 构造函数。
ImageDevice(options, file) 构造函数接收 options 和 file,并创建 ImageDevice 类的实例。
RenderTo(device) 方法接收 ImageDevice 实例并将 SVG 渲染为 JPG。
ImageRenderingOptions 类提供多种属性,可让您完全控制广泛的参数,并改进 SVG 到 JPG 的转换过程。Format 属性设置图像格式。默认情况下,该属性为 Png。要将 SVG 转为 JPG,必须使用 ImageFormat.Jpeg。

在上面的示例中,我们使用不同的 UseAntialiasing 值将 SVG 文件
owl.svg 转为 JPG。图中展示放大 250% 的 JPG 图像片段:a) UseAntialiasing 的值为 true;b) UseAntialiasing 的值为 false。
当您想提高应用程序中已渲染形状、文本和图像的视觉质量时,请使用 UseAntialiasing = true,特别是在清晰度和平滑边缘非常重要的情况下。启用抗锯齿会通过混合边缘周围像素的颜色来平滑锯齿边缘,从而获得更柔和、更精细的外观。
虽然 UseAntialiasing = true 可提供更好的视觉质量,但也可能增加处理时间。对于渲染速度优先的应用程序,设置 UseAntialiasing = false 可能更合适。
Aspose.SVG 允许使用默认或自定义保存选项将 SVG 转换为图像文件格式。使用 ImageSaveOptions 可以自定义渲染过程。例如,您可以指定图像格式、页面大小、边距、背景颜色等。
| 属性 | 说明 |
|---|---|
| Compression | 设置 TIFF 压缩。默认情况下,此属性为 LZW。 |
| CSS | 获取用于配置 CSS 属性处理的 CssOptions 对象。 |
| Format | 设置 ImageFormat,即 JPG、PNG、WebP、BMP、TIFF 或 GIF。默认情况下,此属性为 PNG。 |
| BackgroundColor | 设置用于填充背景的颜色。默认情况下,此属性为 Transparent。 |
| PageSetup | 获取页面设置对象,并用它配置输出页面集。 |
| HorizontalResolution | 设置输出图像的水平分辨率,单位为每英寸像素。默认值为 300 dpi。 |
| VerticalResolution | 设置输出图像的垂直分辨率,单位为每英寸像素。默认值为 300 dpi。 |
| UseAntialiasing | 指定是否使用抗锯齿。默认情况下启用抗锯齿。 |
| Text | 获取用于配置文本渲染的 TextOptions 对象。 |
注意:通过 ImageSaveOptions 类实现的选项继承自 ImageRenderingOptions 类。
PNG 格式使用无损压缩算法来存储 raster 图像。它只支持 RGB 颜色模型,并非为图像印刷而设计。PNG 广泛用于通过网络传输图片,以及在网页和云盘存储库中显示照片和图形。
以下代码片段展示如何从头准备 SVG 文件并将其转换为 PNG:
以下示例展示如何使用 ImageSaveOptions 并通过自定义保存选项将 SVG 转为 PNG:
1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Saving;
4using Aspose.Svg.Converters; 1// Convert SVG to PNG in C# with a custom background color
2
3// Prepare SVG code and save it to a file
4string code = "<svg xmlns='http://www.w3.org/2000/svg'>" +
5 "<circle cx='100' cy='150' r='50' stroke='#2F4F4F' stroke-width='4' fill='#FF7F50' />" +
6 "<circle cx='180' cy='200' r='60' stroke='#2F4F4F' stroke-width='4' fill='#008B8B' />" +
7 "</svg>";
8File.WriteAllText("example.svg", code);
9
10// Initialize an SVG document from the file
11using (SVGDocument document = new SVGDocument("example.svg"))
12{
13 // Initialize an instance of the ImageSaveOptions class and set the BackgroundColor property
14 ImageSaveOptions saveOptions = new ImageSaveOptions();
15 saveOptions.BackgroundColor = System.Drawing.Color.Gainsboro;
16
17 // Convert SVG to PNG
18 Converter.ConvertSVG(document, saveOptions, Path.Combine(OutputDir, "output.png"));
19}在该示例中,
ImageSaveOptions() 构造函数会初始化 ImageSaveOptions 类的实例,并将其传递给 ConvertSVG() 方法。
ConvertSVG() 方法接收 document、saveOptions 和输出文件路径,并执行 SVG 到 PNG 的转换。
注意:转换为 PNG 时不需要指定 Format 属性。
ImageSaveOptions() 构造函数默认使用 Png 作为图像格式。
下面看看如何使用 RenderTo() 方法将 SVG 转换为 PNG:
device) 方法将 SVG 转为 PNG。1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Rendering;
4using Aspose.Svg.Rendering.Image; 1// Render SVG to PNG in C# using ImageDevice
2
3// Prepare a path to a source SVG file
4string documentPath = Path.Combine(DataDir, "snowflake.svg");
5
6// Initialize an SVG document from the file
7using (SVGDocument document = new SVGDocument(documentPath))
8{
9 // Create the ImageDevice, set image Format and specify an output file to render
10 using (IDevice device = new ImageDevice(new ImageRenderingOptions(), Path.Combine(OutputDir, "snowflake.png")))
11 {
12 // Render SVG to PNG
13 document.RenderTo(device);
14 }
15}ImageRenderingOptions() 构造函数会初始化 ImageRenderingOptions 类的实例,并将其传递给
ImageDevice() 构造函数。
ImageDevice(options, file) 构造函数接收 options 和 file,并创建 ImageDevice 类的实例。
RenderTo(device) 方法接收 ImageDevice 实例并将 SVG 渲染为 PNG。
下图展示 snowflake.png 文件。

BMP 图像文件会保存图像质量,并在不压缩的情况下为每个像素存储颜色数据,但文件体积较大,因此不适合 Web 使用。该格式也不适合印前制作,因为它仅限于 RGB。
Aspose.SVG API 可以通过多个阶段将文档从 SVG 转换为 BMP 保存格式:
Format 属性。1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Rendering;
4using Aspose.Svg.Rendering.Image; 1// Convert SVG to BMP in C# using ImageDevice
2
3// Open a source SVG document
4using (SVGDocument document = new SVGDocument(documentPath))
5{
6 // Create ImageDevice, set image Format and specify an output file to render
7 using (IDevice device = new ImageDevice(new ImageRenderingOptions(ImageFormat.Bmp), Path.Combine(OutputDir, "conclusion_out.bmp")))
8 {
9 // Render SVG to BMP
10 document.RenderTo(device);
11 }
12}ImageRenderingOptions() 构造函数会初始化 ImageRenderingOptions 类的实例,并将其传递给
ImageDevice() 构造函数。
ImageDevice(options, file) 构造函数接收 options 和 file,并创建 ImageDevice 类的实例。
RenderTo(device) 方法接收 ImageDevice 实例并将 SVG 渲染为 BMP。
TIFF 是一种用于存储 raster 图形图像的格式,支持丰富的颜色范围。TIFF 被扫描、传真、文字处理、光学字符识别、图像处理和页面排版应用程序广泛支持,也常用于印刷和杂志胶印。
Aspose.SVG API 可以通过多个阶段将文档从 SVG 转换为 TIFF 保存格式:
Format 和其他属性。1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Rendering;
4using Aspose.Svg.Rendering.Image; 1// Convert SVG to TIFF in C# with custom settings
2
3// Open a source SVG document
4using (SVGDocument document = new SVGDocument(Path.Combine(DataDir, "conclusion.svg")))
5{
6 // Initialize an instance of the ImageRenderingOptions class and set the Format and Compression properties
7 ImageRenderingOptions tiffOptions = new ImageRenderingOptions(ImageFormat.Tiff);
8 tiffOptions.Compression = Compression.None;
9
10 // Initialize an instance of the ImageDevice class and specify an output file to render
11 using (IDevice device = new ImageDevice(tiffOptions, Path.Combine(OutputDir, "conclusion.tiff")))
12 {
13 // Render SVG to TIFF
14 document.RenderTo(device);
15 }
16}ImageRenderingOptions() 构造函数会初始化 ImageRenderingOptions 类的实例,并将其传递给
ImageDevice() 构造函数。
ImageDevice(options, file) 构造函数接收 options 和 file,并创建 ImageDevice 类的实例。
RenderTo(device) 方法接收 ImageDevice 实例并将 SVG 渲染为 TIFF。
ImageRenderingOptions 类提供多种属性,可让您完全控制广泛的参数,并改进 SVG 到 TIFF 的转换过程。例如,Compression 属性允许设置 TIFF 文件格式的压缩方式。在上面的示例中,我们设置了 Compression.None。
GIF 是一种常用图像格式,支持动画图像,并经常用于 Web 发布。以下代码片段展示如何使用 Aspose.SVG for .NET API 将 SVG 转为 GIF:
Format 和其他保存选项。以下示例展示如何使用 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; 1// Convert SVG to GIF in C# with custom settings
2
3// Initialize an SVG document from a file
4using (SVGDocument document = new SVGDocument(Path.Combine(DataDir, "owl.svg")))
5{
6 // Initialize an instance of the ImageSaveOptions class and set the PageSetup property
7 ImageSaveOptions saveOptions = new ImageSaveOptions(ImageFormat.Gif);
8 saveOptions.PageSetup.AnyPage = new Page(new Drawing.Size(400, 600), new Margin(20, 20, 20, 20));
9
10 // Convert SVG to GIF
11 Converter.ConvertSVG(document, saveOptions, Path.Combine(OutputDir, "owl.gif"));
12}SVGZ 是压缩 SVG 文件,不是单独的绘图模型。Aspose.SVG for .NET 可以使用 SVGDocument 加载 .svgz 文件;之后,您可以使用与 SVG 相同的 ImageSaveOptions 和 Converter.ConvertSVG() 工作流将文档渲染为 PNG:
1using Aspose.Svg;
2using Aspose.Svg.Converters;
3using Aspose.Svg.Saving;
4
5using (var document = new SVGDocument("input.svgz"))
6{
7 var options = new ImageSaveOptions();
8 Converter.ConvertSVG(document, options, "output.png");
9}PNG 是 ImageSaveOptions 的默认图像格式,因此 SVGZ 到 PNG 转换不需要设置 Format 属性。当您需要从压缩 SVG 资源生成缩略图、raster 预览或 Web 图像时,请使用此工作流。如果需要在渲染前获得可编辑标记,请参阅
在 C# 中将 SVGZ 转为 SVG。
在生产 .NET 应用程序中将 SVG 转换为 raster 图像时,请明确设置输出格式、尺寸、分辨率、背景和资源访问。这有助于让缩略图、预览、报表和 Web 图像在本地开发、服务器和容器中保持一致。
| 生产任务 | 建议 |
|---|---|
| 生成 Web 缩略图 | 使用 PNG 或 WebP,设置 PageSetup,并为透明 SVG 内容选择可预测的背景。请参阅
SVG 转换期间调整文档大小。 |
| 转换上传的 SVG 文件 | 从 stream 或受控存储加载,验证 SVG,并将输出图像写入应用程序管理的存储。请参阅 在 C# 中创建、加载和读取 SVG 文件。 |
| 保留透明度 | 选择 PNG 或 WebP,并保持 BackgroundColor 透明。当必须保留透明度时避免使用 JPG。关于元素不透明度和透明导出工作流,请参阅
C# 中的 SVG 不透明度和透明颜色。 |
| 从透明 SVG 生成 JPG 输出 | 设置 BackgroundColor,因为 JPG 不支持 alpha 透明度。 |
| 处理大量 SVG 文件 | 释放 SVGDocument 实例,按文件处理错误,并避免让大型 SVG 或 raster 输出在内存中停留过久。 |
| 保持文本输出稳定 | 确保所需字体可用或已嵌入。缺失字体可能改变文本度量和最终图像布局。请参阅 在 C# 中使用 SVG 字体和文本。 |
| 问题 | 常见原因 | 修复方法 |
|---|---|---|
| 输出图像尺寸错误 | SVG 没有明确的 width、height 或 viewBox,或者缺少输出页面设置 | 定义 SVG 尺寸,或在 ImageSaveOptions 或 ImageRenderingOptions 中设置 PageSetup。请参阅
SVG viewBox 和
调整文档大小。 |
| 透明 SVG 在 JPG 中变黑、变白或出现异常背景 | JPG 不支持透明度 | 使用 PNG/WebP 保留透明度,或在保存为 JPG 前设置 BackgroundColor。请参阅
C# 中的 SVG 不透明度和透明颜色。 |
| 线条或文本看起来有锯齿 | 抗锯齿被禁用或输出分辨率太低 | 使用 UseAntialiasing = true,并设置合适的水平和垂直分辨率。请参阅
SVG 渲染质量和输出一致性。 |
| 外部图像、字体或 CSS 缺失 | 转换期间无法访问引用的资源 | 使用可访问的资源路径、嵌入资源,或配置运行环境以便解析依赖项。请参阅 修复 C# 中的 SVG 样式和字体问题。 |
| TIFF 文件太大 | 未压缩 TIFF 输出或高分辨率 raster 内容 | 配置 TIFF Compression,检查所需输出分辨率,并在可能时优化源 SVG。请参阅
为 Web 和性能优化 SVG 文件。 |
| 开发机和服务器输出不同 | 字体、文件路径或资源访问因环境而异 | 为 Windows、Linux、Docker 和云部署一致地配置字体和资源位置。请参阅 环境配置。 |
可以转换在内存中创建或编辑的 SVG 吗?
可以。创建或更新 SVGDocument,配置 ImageSaveOptions,并将文档实例传递给 Converter.ConvertSVG()。当您需要在渲染最终图像前编辑 SVG 元素、样式或颜色时,这很有用。
可以在将 SVG 渲染为图像之前更改 SVG 内容吗?
可以。您可以先更新 SVG DOM,例如使用 CSS 选择器,然后渲染修改后的文档。请参阅
在 C# 中使用 CSS 选择器编辑 SVG。
SVG 到图像转换会保留矢量数据吗?
不会。PNG、JPG、WebP、BMP、TIFF 和 GIF 都是 raster 输出。结果是基于像素的图像数据。如果需要保留可编辑的矢量标记,请将文档保存为 SVG,或使用 SVGZ 压缩。
可以在服务器应用程序中使用相同代码吗?
可以。服务器应用程序通常从文件、stream、URL 或生成的字符串加载 SVG,然后将渲染后的图像写入应用程序管理的存储。请显式配置字体、资源路径和输出尺寸,以获得一致结果。
如果渲染图像看起来与源 SVG 不同,应从哪里开始排查?
检查尺寸、viewBox、字体、链接资源、CSS、背景颜色和抗锯齿。上面的
常见错误和修复 表链接到最相关的故障排查文章。
您可以试用免费的在线 SVG to JPG Converter,它质量高、简单且快速。只需上传并转换文件,几秒钟即可获得结果。
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.