如果您從事網頁圖形、儀表板或數據報告的工作,您可能已經遇到將 SVG 圖像轉換為標準 PNG 文件的需求。也許您正在構建一個創建圖表、圖標或視覺報告的 Python 應用程式。無論用途是什麼,將 SVG 代碼轉換為 PNG 是一項您經常需要處理的任務。
在本指南中,我們將介紹如何使用一個可靠的 Python 庫,輕鬆地將 SVG 代碼和文件轉換為 PNG 格式,該庫旨在以卓越的準確性渲染和處理 SVG 文件。
What Is SVG Code, and Why Convert It to PNG?
SVG (可縮放向量圖形) 是一種基於 XML 的格式,非常適合用於創建清晰的二維視覺效果。由於它是基於向量的,SVG 圖像可以無限縮放而不會失去質量,這使它成為現代界面、數據圖表和互動網頁圖形的理想選擇。
但這裡有個問題:雖然 SVG 是靈活的,但 PNG 通常更實用。為什麼?
- PNGs 在所有瀏覽器、編輯器和查看器中都能正常工作。
- 它們易於分享並嵌入文件、簡報或電子郵件中。
- 像 PNG 這樣的點陣圖在許多應用程式和環境中通常加載更快。
簡而言之,將 SVG 代碼轉換為 PNG 有助於確保您的視覺效果在每個設備和平台上看起來清晰且一致——即使在矢量支持不保證的情況下也是如此。
將 SVG 代碼轉換為 PNG 的 Python 庫
Aspose.SVG for Python via .NET 是一個專門用於在 Python 應用程序中解析、編輯和渲染 SVG 文件的 API。它讓您:
- 將 SVG 轉換為多種格式,包括 PNG、JPEG、BMP、PDF 和 XPS。
- 從字符串、文件或網址加載 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)

使用 Python 將 SVG 代碼轉換為 PNG。
將SVG代碼從文件轉換為PNG格式的Python代碼
如果您已經在磁碟上保存了一個 SVG 文件,您可以直接將其轉換為 PNG。這對於轉換模板、圖標或導出的向量圖形非常有用。
按照以下步驟將 SVG 代碼從文件轉換為 PNG:
- 使用
SVGDocument類物件載入現有的 SVG 檔案。 - 創建一個 PNG 格式的圖像渲染設備。
- 渲染並保存圖像。
以下代碼示例顯示了如何使用 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,這對於網路應用程式或雲服務非常完美。這種方法避免了創建臨時文件,並且非常適合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。我們通過 .NET 使用了 Aspose.SVG for Python 來處理從 SVG 到 PNG 的轉換。它很好地處理字符串、文件和字體,幾乎滿足您的所有需求。如果您正在製作縮略圖、導出圖表或為報告生成視覺效果,這個庫在 SVG 渲染方面為您提供了完全的靈活性。對於任何經常需要將 SVG 代碼轉換為高質量 PNG 圖像的人來說,這是一個可靠的選擇,所有操作都在 Python 中進行。
有問題或遇到困難嗎?別擔心!我們的團隊樂意幫助您!您隨時可以在 Aspose.SVG free support forum 聯繫我們,並獲取專家的指導。
