美文网首页
Python 生成二维码且html的img标签显示Base64的

Python 生成二维码且html的img标签显示Base64的

作者: 河码匠 | 来源:发表于2018-12-12 11:59 被阅读0次

    Python 生成二维码图片数据

    使用qrcode模块来创建二维码。https://github.com/lincolnloop/python-qrcode这里源码。

    import qrcode
    import StringIO
    import base64
    def make_code(text):
        qr = qrcode.QRCode(
            version=5,
            error_correction=qrcode.constants.ERROR_CORRECT_L,
            box_size=8,
            border=4
        )
        qr.add_data(text)
        qr.make(fit=True)
        img = qr.make_image()
        img_buffer = StringIO.StringIO()
        img.save(img_buffer, 'png')
        res = img_buffer.getvalue()
        img_buffer.close()
        return base64.b64encode(res)
    

    说明:

    1. 第5~10行创建 qrcode 二维码对象并设置参数。参数说明如下:
    字符串比较运算符 说明
    version 值为1~40的整数,控制二维码的大小(最小值是1,是个12×12的矩阵)。 如果想让程序自动确定,将值设置为 None 并使用 fit 参数即可
    error_correction 容错率:ERROR_CORRECT_L大约7%或更少的错误能被纠正;ERROR_CORRECT_M(默认):大约15%或更少的错误能被纠正;ROR_CORRECT_H:大约30%或更少的错误能被纠正。
    box_size 控制二维码中每个小格子包含的像素数
    border 控制边框(二维码与图片边界的距离)包含的格子数(默认为4,是相关标准规定的最小值)
    1. 第11行,填入二维码中的内容
    2. 第12行,将数据编译为QR码数组。
    3. 第13行,根据QR码数据制作图像。
    4. 第14~17行,将图片保存到缓存
    5. 最后转为 base64返回

    html中显示 Base64类型图片

    <a id="temporary"></a>
    <img src="data:image/png;base64,数据" id="register_qr" />
    <button type="button" onclick="down()">下载</button>
    

    png 可以换成其他图片后缀

    JavaScript 下载base64图片

    // 根据图片生成画布
    function convertImageToCanvas(image) {
        var canvas = document.createElement("canvas");
        canvas.width = image.width;
        canvas.height = image.height;
        canvas.getContext("2d").drawImage(image, 0, 0);
        return canvas;
    }
    
    // 下载图片
    function down() {
        var sampleImage = document.getElementById("register_qr"),
        canvas = convertImageToCanvas(sampleImage);
        url = canvas.toDataURL("image/png"); //PNG格式
        //获取a 元素将下载内容填入 a 标签中的 href 后模拟点击下载图片
        var triggerDownload = $("#temporary").attr("href", url).attr("download", "二维码.png");
        triggerDownload[0].click();
        triggerDownload.remove();
    }
    

    相关文章

      网友评论

          本文标题:Python 生成二维码且html的img标签显示Base64的

          本文链接:https://www.haomeiwen.com/subject/fmyuhqtx.html