python - flask如何返回图片流?
大家讲道理
大家讲道理 2017-04-17 16:26:12
[Python讨论组]

我的flask需要通过传入的url参数,通过qrcode库生成二维码图片,然后将它写入流中返回。

import qrcode
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=1
)
qr.add_data(url)
img = qr.make_image()

生成的qrcode.image.pil.PilImage对象并没有太多的方法可用,

但可以通过:img.convert("RGBA”)能得到一个PIL.Image.Image对象
我想请教:
1.如何把这个Image对象,通过流读出来。
2.如何把这个流通过flask写给请求者。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
ringa_lee

PilImage 的源码看到有个save 方法

def save(self, stream, kind=None):
        if kind is None:
            kind = self.kind
        self._img.save(stream, kind)

那么针对这个stream可以用Python的io库搞定。

参考 Flask-QRcode中的实现即可

def qrcode(data, version=None, error_correction='L', box_size=10, border=0, fit=True):
    """ makes qr image using qrcode as qrc See documentation for qrcode package for info"""
    qr = qrc.QRCode(
        version=version,
        error_correction=correction_levels[error_correction],
        box_size=box_size,
        border=border
    )
    qr.add_data(data)
    qr.make(fit=fit)

    # creates qrcode base64
    out = BytesIO()
    qr_img = qr.make_image()
    qr_img.save(out, 'PNG')

    return u"data:image/png;base64," + base64.b64encode(out.getvalue()).decode('ascii')

具体未测,你可以试试。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号