使用pyqrcode与pypng生成二维码如何不输出PNG文件直接获取数据
实现方案
完全可以实现内存生成二维码不写本地磁盘,用Python标准库自带的io.BytesIO内存字节流对象替代本地文件路径即可,pyqrcode的png()方法原生支持写入类文件对象,修改后的代码如下:
import io from pyqrcode import create import base64 def getQrWithURL(url): # 初始化内存字节流 img_stream = io.BytesIO() # 生成二维码直接写入内存流,不生成本地文件 embedded_qr = create(url) embedded_qr.png(img_stream, scale=7) # 重置流指针到起始位置,读取完整数据 img_stream.seek(0) image_data = base64.b64encode(img_stream.read()).decode('utf-8') return image_data
说明
- 不需要额外安装第三方依赖,
io是Python标准库内置组件 seek(0)操作不可省略:二维码写入流后,流指针会停在内容末尾,必须重置到开头才能读取到完整的图片数据- 原逻辑里的pypng导入、本地文件读写相关代码都可以直接移除,整体运行效率更高,也不会残留临时文件
内容的提问来源于stack exchange,提问作者Weilory
相关产品推荐
相关产品推荐

