如果您处理网络图形、仪表板或数据报告,您可能遇到将 SVG 图像转换为标准 PNG 文件的需要。也许您正在构建一个创建图表、图标或视觉报告的 Python 应用程序。无论用例是什么,将 SVG 代码转换为 PNG 是您经常需要处理的任务。
在本指南中,我们将介绍如何使用一个可靠的 Python 库轻松地将 SVG 代码和文件转换为 PNG 格式,该库旨在以卓越的准确性渲染和处理 SVG 文件。
什么是SVG代码,为什么要将其转换为PNG?
SVG(可缩放矢量图形)是一种基于 XML 的格式,非常适合创建清晰的二维视觉效果。由于它是基于矢量的,SVG 图像可以缩放到任何大小而不会失去质量,这使它非常适合现代界面、数据图表和交互式网页图形。
但这里有个问题:虽然 SVG 是灵活的,但 PNG 通常更实用。为什么?
- PNGs 在所有浏览器、编辑器和查看器中都可使用。
- 它们易于分享和嵌入到文档、演示文稿或电子邮件中。
- 栅格图像如 PNG 通常在许多应用程序和环境中加载更快。
简单来说,将SVG代码转换为PNG有助于确保您的视觉效果在每个设备和平台上看起来都清晰一致——即使在没有保证支持矢量的情况下。
Python 库以将 SVG 代码转换为 PNG
Aspose.SVG for Python via .NET 是一个专门用于在 Python 应用程序中解析、编辑和渲染 SVG 文档的 API。它让你:
- 将 SVG 转换为多种格式,包括 PNG、JPEG、BMP、PDF 和 XPS。
- 从字符串、文件或 URL 加载 SVG。
- 控制输出图像大小、分辨率(DPI)和背景颜色。
- 完全离线工作,无需浏览器或第三方渲染器。
在我们跳入代码之前,请确保您已经安装了该库。您可以直接从 官方发布页面 下载 Aspose.SVG for Python,或者您可以通过 pip 轻松添加它:
pip install aspose-svg-net
将 SVG 代码转换为 PNG 在 Python 中
让我们开始将作为字符串存储的 SVG 代码转换为 PNG 图像。此方法非常适合动态生成的 SVG,例如从 API 接收到的图表或图示。
按照以下步骤将 SVG 代码从字符串转换为 PNG 图像:
- 使用
SVGDocument类对象将 SVG 代码加载为字符串。 - 创建
ImageRenderingOptions类的实例,并指定 PNG 为输出格式。 - 创建
ImageDevice以将渲染输出写入文件。 - 使用
document.renderto(device)方法将 SVG 渲染为 PNG。
以下代码示例演示了如何使用 Python 将 SVG 代码从字符串转换为 PNG 图像。
import aspose.svg as svg
from aspose.svg.rendering.image import ImageDevice, ImageFormat, ImageRenderingOptions
# SVG code as a string
svg_code = """
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200">
<rect width="200" height="200" fill="lightblue"/>
<circle cx="100" cy="100" r="80" fill="orange" stroke="black" stroke-width="2"/>
<text x="100" y="110" text-anchor="middle" font-size="24" fill="white">SVG</text>
</svg>
"""
# 1. 从字符串加载 + 基础 URI(如果您不依赖外部资产,请使用 ".")
document = svg.SVGDocument(svg_code, ".")
# 2. 选择 PNG 作为输出
options = ImageRenderingOptions()
options.format = ImageFormat.PNG
# 3. 创建一个将渲染输出写入文件的设备
device = ImageDevice(options, r"source_out.png")
# 4. 将 SVG 渲染为 PNG
document.render_to(device)

将 SVG 代码转换为 PNG 使用 Python。
将 SVG 代码从文件转换为 PNG 格式在 Python 中
如果您已经在磁盘上保存了 SVG 文件,您可以直接将其转换为 PNG。这对于转换模板、图标或导出的矢量图形非常有用。
按照以下步骤将文件中的SVG代码转换为PNG:
- 使用
SVGDocument类对象加载现有的 SVG 文件。 - 创建一个PNG格式的图像渲染设备。
- Render and save the image.
以下代码示例演示如何使用 Python 将文件中的 SVG 代码转换为 PNG 图像。
import aspose.svg as svg
from aspose.svg.rendering.image import ImageDevice, ImageFormat, ImageRenderingOptions
# 加载 SVG 文件
document = svg.SVGDocument("aspose-svg-logo.svg")
# 选择 PNG 作为输出
options = ImageRenderingOptions()
options.format = ImageFormat.PNG
# 初始化 PNG 渲染设备
device = ImageDevice(options, "aspose-svg-logo.png")
# Render and save the output
document.render_to(device)

将 SVG 代码从文件转换为 PNG 格式的 Python 代码。
调整输出大小和质量
有时您需要控制 PNG 的输出尺寸、DPI 或缩放。Aspose.SVG 提供了灵活的选项来实现这一点。
请按照以下步骤调整输出图像的大小和质量:
- 定义具有自定义宽度、高度或DPI的渲染选项。
- 在创建渲染设备时传递选项。
- Render and save.
以下代码示例显示了在将 SVG 代码转换为 PNG 时如何调整输出图像的大小和质量:
import aspose.svg as svg
from aspose.svg.drawing import Resolution
from aspose.svg.rendering.image import ImageDevice, ImageFormat, ImageRenderingOptions
# 加载 SVG 文件
document = svg.SVGDocument("aspose-svg-logo.svg")
# 选择 PNG 作为输出
options = ImageRenderingOptions()
options.format = ImageFormat.PNG
# 设置渲染选项
options.page_setup.sizing.width = 600
options.page_setup.sizing.height = 400
options.horizontal_resolution = Resolution.from_dots_per_inch(96.0)
options.vertical_resolution = Resolution.from_dots_per_inch(96.0)
# 初始化 PNG 渲染设备
device = ImageDevice(options, "aspose-svg-logo-resized.png")
# Render and save the output
document.render_to(device)
使用 Python 在内存中将 SVG 转换为 PNG
您可以完全在内存中呈现 SVG,这对于 Web 应用程序或云服务非常完美。这种方法避免了创建临时文件,非常适合 API 响应。
按照以下步骤使用 Python 在内存中将 SVG 转换为 PNG:
- 创建一个SVG文档从字符串。
- 渲染到内存流。
- 直接使用 PNG 字节(例如,通过 API 返回)。
以下代码示例说明了如何使用 Python 在内存中将 SVG 转换为 PNG:
import aspose.svg as svg
from aspose.svg.rendering.image import ImageDevice, ImageFormat
import io
svg_code = """
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
<rect width="100" height="100" fill="green"/>
</svg>
"""
# 从字符串创建 SVG 文档
document = svg.SVGDocument(svg_code, ".")
# 选择 PNG 格式
opts = ImageRenderingOptions()
opts.format = ImageFormat.PNG
# 将渲染到内存流
memory_stream = io.BytesIO()
device = ImageDevice(opts, memory_stream)
document.render_to(device)
# 访问 PNG 字节
png_data = memory_stream.getvalue()
print(f"Generated PNG size: {len(png_data)} bytes")
Output:
Generated PNG size: 34732 bytes
获取免费许可证
Aspose 产品默认以评估模式运行,这可能会添加水印或限制。您可以从 Aspose Temporary License page 请求一个免费的临时许可证。应用后,所有转换将无任何限制。
在线免费将SVG转换为PNG
如果你只需要一个快速转换而无需编码,可以尝试由 Aspose 提供的 Free Online SVG to PNG Converter。它直接在你的浏览器中运行,并使用与 Python API 相同的高质量渲染引擎。

SVG 转 PNG:免费资源
除了将 SVG 代码转换为 PNG,您可以参考以下资源来提升您的技能。您会找到从清晰的文档和实践开发者指南到您可以立即尝试的在线工具的一切。请慢慢来,探索,并以自己的节奏免费掌握 Aspose.SVG。
SVG 转 PNG:常见问题解答
Q1: 我可以在PNG输出中保持透明度吗?
是的,Aspose.SVG 在转换过程中默认保留透明度。
Q2: 它是否在没有任何外部工具的情况下工作?
是的。Aspose.SVG 在内部渲染 SVG,而不依赖于浏览器或 Inkscape。
Q3: 我可以直接从内存或 URL 加载 SVG 吗?
是的,您可以从字符串、文件路径或网页 URL 初始化 SVGDocument。
总结一下
在这篇文章中,您刚刚看到如何在 Python 中将 SVG 代码和文件转换为 PNG。我们使用了 Aspose.SVG for Python 通过 .NET 来处理从 SVG 到 PNG 的转换。它很好地处理字符串、文件和字体,几乎涵盖了您所需的一切。如果您正在制作缩略图、导出图表或为报告生成可视化,这个库在处理 SVG 渲染时为您提供了完全的灵活性。对于任何定期需要将 SVG 代码转换为高质量 PNG 图像的人来说,这是一个可靠的选择,全部在 Python 中完成。
有问题或遇到棘手的事情吗?别担心!我们的团队很乐意提供帮助!您可以随时在 Aspose.SVG free support forum 上寻求指导,并直接从专家那里获得帮助。
