Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Quick Answer: 要在 Python 中将 SVG 转换为 PNG,请用
SVGDocument 加载源文件,创建
ImageSaveOptions,并将二者传给
Converter.convert_svg()。PNG 是默认图像输出格式,ImageSaveOptions 可控制背景颜色、页面大小、边距和分辨率。
PNG 是支持透明度的无损栅格格式。它适合 Web 图形、预览图、缩略图,以及不能直接渲染 SVG 的应用。
下面的示例使用默认 PNG 设置将 document.svg 转换为 result.png:
1from aspose.svg import SVGDocument
2from aspose.svg.converters import Converter
3from aspose.svg.saving import ImageSaveOptions
4
5# Convert an SVG file to PNG using the default save options
6options = ImageSaveOptions()
7
8with SVGDocument("document.svg") as document:
9 Converter.convert_svg(document, options, "result.png")代码执行三个操作:
result.png。当 PNG 需要特定画布、背景或分辨率时使用 ImageSaveOptions。下面的示例转换 winter.svg,添加纯色背景,创建带 10 像素边距的 600 × 550 页面,并以 96 dpi 渲染:
1import os
2from aspose.svg import SVGDocument
3from aspose.svg.converters import Converter
4from aspose.svg.saving import ImageSaveOptions
5from aspose.svg.drawing import Resolution, Page, Size, Margin
6from aspose.pydrawing import Color
7
8# Convert SVG to PNG with a custom background, page, and resolution
9input_folder = "data/"
10output_folder = "output/"
11input_path = os.path.join(input_folder, "winter.svg")
12output_path = os.path.join(output_folder, "winter.png")
13os.makedirs(output_folder, exist_ok=True)
14
15options = ImageSaveOptions()
16options.background_color = Color.from_argb(231, 217, 230)
17options.page_setup.any_page = Page(Size(600, 550), Margin(10, 10, 10, 10))
18options.horizontal_resolution = Resolution.from_dots_per_inch(96.0)
19options.vertical_resolution = Resolution.from_dots_per_inch(96.0)
20
21with SVGDocument(input_path) as document:
22 Converter.convert_svg(document, options, output_path)生成的 PNG 使用指定的页面设置,而不是只依赖 SVG viewport。下图比较源 SVG 和在新背景上渲染的 PNG。

| 属性 | 使用场景 |
|---|---|
| background_color | 用指定颜色填充透明区域 |
| page_setup | 设置页面尺寸和边距 |
| horizontal_resolution | 设置水平输出分辨率,单位为 dpi |
| vertical_resolution | 设置垂直输出分辨率,单位为 dpi |
| smoothing_mode | 控制栅格化质量 |
| text | 通过 TextOptions 配置文本渲染 |
如果未设置 background_color,SVG 的透明区域在 PNG 中保持透明。分辨率影响栅格密度,而 page_setup 控制输出画布。以像素指定页面尺寸时,像素尺寸通常比单独提高 dpi 更重要。
| 问题 | 可能原因 | 修复方法 |
|---|---|---|
| PNG 为空或被裁剪 | SVG 没有可用 viewport,或输出页面太小 | 定义 SVG 的 width、height 或 viewBox,或设置 options.page_setup.any_page |
| 透明区域显示不符合预期 | 未指定输出背景 | 需要纯色画布时设置 options.background_color |
| 文本外观不同 | 引用字体不可用 | 安装字体,或在需要精确字形外观时先将文本矢量化 |
| 链接图像或 CSS 缺失 | 无法解析相对资源 | 从文件路径加载 SVG,或提供正确的 base URI |
| 输出尺寸不符合预期 | 页面大小和分辨率被当作同一设置 | 用 page_setup 控制尺寸,用 horizontal_resolution/vertical_resolution 控制 dpi |
也可以在浏览器中测试 SVG 到 PNG 转换。上传 SVG 文件,选择 PNG,并将结果与程序输出进行比较。
创建 ImageSaveOptions,用 SVGDocument 打开源文件,然后调用 Converter.convert_svg(document, options, output_path)。
会。PNG 支持透明度,透明 SVG 区域会保持透明,除非设置了 ImageSaveOptions.background_color。
用 Page、Size 和 Margin 设置 ImageSaveOptions.page_setup。需要特定 dpi 时再单独设置分辨率属性。
可以。从 SVG 字符串和 base URI 创建 SVGDocument,然后将该文档传给 Converter.convert_svg()。
PdfDevice 渲染。Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.