美文网首页
利用qr_code模块生成二维码

利用qr_code模块生成二维码

作者: Odven | 来源:发表于2020-05-28 12:15 被阅读0次
    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    
    import qrcode
    from PIL import Image
    
    
    def generateQrCode(qr_file="qr_file.png", data=None, icon_file=None, C_ratio=None):
        '''
        :param qr_file: 保存生成的二维码图片文件
        :param data: 二维码里面的内容
        :param icon_file: 出现在二维码图片中间的图片
        :param C_ratio: 控制出现在二维码图片中间的图片的大小
        :return: img
        '''
        # 创建QRCode对象
        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_H,
            box_size=10,
            border=3
        )
        # version: 一个整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12 的矩阵),如果想让程序自动生成,将值设置为 None并使用fit = True参数即可。
    
        # error_correction: 二维码的纠错范围,可以选择4个常量:
        # 1. ERROR_CORRECT_L 7%以下的错误会被纠正
        # 2. ERROR_CORRECT_M (default) 15%以下的错误会被纠正
        # 3. ERROR_CORRECT_Q 25 %以下的错误会被纠正
        # 4. ERROR_CORRECT_H. 30%以下的错误会被纠正
    
        # box_size: 每个点(方块)中的像素个数
    
        # border: 二维码距图像外围边框距离,默认为4,而且相关规定最小为4
    
        # 添加数据
        qr.add_data(data)
    
        # 填充数据
        qr.make(fit=True)
    
        # 生成二维码
        img = qr.make_image(fill_color="green", back_color="white")
    
        # 显示二维码
        # img.show()
        qr_w, qr_h = img.size
        # print(qr_w, qr_h)
    
        if icon_file is not None:
            # 重做图片大小
            try:
                icon = Image.open(icon_file)
            except Exception as e:
                return e
            if C_ratio is None:
                C_ratio = 5
            ic_w, ic_h = int(qr_w / C_ratio), int(qr_h / C_ratio)
            # print(ic_w, ic_h)
            icon = icon.resize((ic_w, ic_h), Image.ANTIALIAS)
    
            w, h = int((qr_w - ic_w) / 2), int((qr_h - ic_h) / 2)
            # print(w, h)
    
            # 添加图片到二维码
            img.paste(icon, (w, h), mask=None)
            # img.show()
    
        # 保存二维码图片
        img.save(qr_file)
        return img
    
    
    if __name__ == '__main__':
        qr_file = "dingding.jpg"
        data = "窗前明月光,疑似地上霜。举头望明月,低头思故乡。"
        img = generateQrCode(qr_file=qr_file, data=data, icon_file="d.jpg", C_ratio=3)
        print(img.show())
    
        img1 = generateQrCode(data="study hard, improve every day. 好好学习天天向上")
        print(img1.show())
    
        img2 = generateQrCode()
        print(img2.show())

    相关文章

      网友评论

          本文标题:利用qr_code模块生成二维码

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