【问题标题】:How to convert a base64 string to SVG in python?如何在 python 中将 base64 字符串转换为 SVG?
【发布时间】:2020-10-19 07:59:05
【问题描述】:

我正在使用flask-qrcode 来呈现二维码(这是我发现的唯一一个启用叠加图标的插件)。按照this 教程,我的函数在一个路由内:

@app.route('/qr', methods=['GET', 'POST'])
def qr():
    return QRcode.qrcode("data", error_correction='H', icon_img='icon.png')

但是,因为 flask-qrcode 插件被设计为直接在 Jinja2 模板中呈现,这意味着我的 QRcode 函数返回一个字符串,该字符串在浏览器中呈现如下:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjoAAAI6CAY...

那么,我的问题是,我需要在我的 python 路由函数中添加什么来返回 SVG 图像而不是字符串?

谢谢!

【问题讨论】:

    标签: python flask svg jinja2 qr-code


    【解决方案1】:

    那么,我的问题是,我需要在我的 python 路由函数中添加什么来返回 SVG 图像而不是字符串?

    使用 SVG 图像工厂as explained in the library's documentation 渲染二维码。

    这里您使用的是默认工厂,它渲染为无法真正转换为 SVG 的 PNG(虽然对矢量图像进行光栅化是一种非常标准的操作,但对光栅图像进行矢量化往往会产生低于标准的结果)。

    【讨论】:

    • 我尝试了你建议的 base64 方法,但得到了这个:'�PNG IHDR�=&�KIDATx���Q��\�Q�2�0I�....'我'现在就试试 SVG 工厂方法。
    • 你是对的,我不情愿地不得不切换到 pyqrcode,即使它没有任何图标覆盖功能。感谢您的帮助。
    • @JackPutter 它看起来像 flask-qrcode 只是使用常规 qrcode 来呈现 PIL 图像,然后将图标合并到那里。所以你也可以这样做。为 SVG 这样做既更复杂(不能使用 PIL)也更简单(SVG“只是”一个 XML 文档,所以这是一个问题或找到将光栅图像嵌入到您想要的位置的正确方法)。
    猜你喜欢
    • 2021-05-01
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 1970-01-01
    • 2015-12-20
    • 2019-12-18
    • 1970-01-01
    相关资源
    最近更新 更多