You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python读取SVG格式二维码文件并在屏幕显示?

嘿,这个需求很常见!要在Python里显示SVG格式的二维码,我给你整理了几个实用的方案,你可以根据自己的场景选:

方法1:使用Pillow + svglib(通用首选)

这个方案兼容性拉满,不管你是写个小脚本快速看效果,还是要整合到其他项目里都能用。核心思路是把SVG转成PIL能处理的图像对象,然后直接显示。

先装需要的依赖:

pip install pillow svglib

直接上代码,两种写法任你选:

写法1:生成临时文件再显示

from svglib.svglib import svg2rlg
from reportlab.graphics import renderPM
from PIL import Image

# 读取本地SVG二维码文件
drawing = svg2rlg("your_qr_code.svg")
# 转成PNG临时文件
renderPM.drawToFile(drawing, "temp_qr.png", fmt="PNG")

# 用PIL打开并显示
img = Image.open("temp_qr.png")
img.show()

写法2:直接转成PIL对象(无临时文件)

如果你不想生成临时文件,用这个更高效:

from svglib.svglib import svg2rlg
from reportlab.graphics import renderPM
from PIL import Image

drawing = svg2rlg("your_qr_code.svg")
# 直接转成PIL Image对象
pil_img = renderPM.drawToPIL(drawing)
pil_img.show()
方法2:使用Tkinter + svgTk(轻量GUI场景)

要是你正在用Tkinter做桌面小工具,直接用svgTk可以在Tk窗口里原生渲染SVG,不用转格式,更清爽。

先装依赖:

pip install svgtk pillow

代码示例:

import tkinter as tk
from svgtk import SvgImage

# 创建Tk窗口
root = tk.Tk()
root.title("SVG二维码预览")

# 加载SVG文件,还能直接调整大小
svg_img = SvgImage(file="your_qr_code.svg")
svg_img.config(width=300, height=300)
svg_img.pack(padx=20, pady=20)

# 启动GUI循环
root.mainloop()
方法3:使用PyQt5/PyQt6(专业GUI开发)

如果你的项目是基于Qt框架的,那简直赚了——Qt本身自带SVG支持,直接加载显示就行,完全不需要额外的格式转换。

先装对应版本的PyQt:

# 选一个就行,PyQt5或PyQt6
pip install pyqt5 pyqt5-svg
# pip install pyqt6 pyqt6-svg

PyQt5的示例代码:

from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtSvg import QSvgWidget
import sys

app = QApplication(sys.argv)

# 创建主窗口
window = QMainWindow()
window.setWindowTitle("SVG二维码显示")
window.resize(350, 350)

# 加载SVG文件到控件
svg_widget = QSvgWidget("your_qr_code.svg")
window.setCentralWidget(svg_widget)

window.show()
sys.exit(app.exec_())

PyQt6的话只需要把导入的PyQt5换成PyQt6,其他逻辑完全一样。

小提示

如果你的SVG不是本地文件,而是字符串形式的二维码数据(比如接口返回的SVG字符串),这些方法也都支持:比如svglib的svg2rlg可以直接传入SVG字符串,Qt的QSvgWidget可以用load()方法加载字符串内容,灵活得很~

内容的提问来源于stack exchange,提问作者Ruosh

火山引擎 最新活动