• python之qrcode模块生成二维码


    搬运出处: https://www.jianshu.com/p/c0073c6aa544

    用Python的qrcode包来生成二维码很简单

    一、前期准备:

    • pip install qrcode
    • pip install Image

    二、安装好之后就可以通过代码实现二维码了

    - 1. 简单生成二维码:
    import qrcode # 模块导入
    img = qrcode.make('http://www.baidu.com')  # 调用qrcode的make()方法传入url或者想要展示的内容
      with open('test.png', 'wb') as f: img.save(f) # 写入文件
    
    

      生成的二维码:

      
    import qrcode  # 模块导入
    img = qrcode.make('欢迎来到我的简书')  # 调用qrcode的make()方法传入url或者想要展示的内容
      img.save("text.png") # 保存

      生成的二维码:

      

    此处并没有使用add_data()添加数据,make_image()生成二维码,而是使用qrcode.make(data)的方式获取im对象。qrcode.make()是qrcode提供简单调用接口。

    - 2. 正常生成二维码的步骤:
    1. 创建QRCode对象
    2. add_data()添加数据
    3. make_image()创建二维码(返回im类型的图片对象)
    4. 自动打开图片,im.show()
    - 3. QRCode参数详细说明:
    • 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%以下的错误会被纠正
    • boxsize: 每个点(方块)中的像素个数
    • border: 二维码距图像外围边框距离,默认为4,而且相关规定最小为4
    4. 参数配置后生成自定制二维码
    import qrcode
    
    data = 'http://www.baidu.com/'
    img_file = r'保存路径'
    
    # 实例化QRCode生成qr对象
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=4
    )
    # 传入数据
    qr.add_data(data)
    
    qr.make(fit=True)
    
    # 生成二维码
    img = qr.make_image()
    
    # 保存二维码
    img.save(img_file)
    # 展示二维码
    img.show()
     

    三、额外添加

    往往我们看到的二维码中间都有一张图片或者用户头像,如何才能生成这样一张二维码?

    利用PIL库中image模块的paste函数
    img.paste(path,where,mask=None)
    其中,img为image对象;path为所添加图片;where为tuple,如:(x,y),表示图片所在二维码的横纵坐标

    import qrcode
    from PIL import Image
    import matplotlib.pyplot as plt
    
    
    def getQRcode(data, file_name):
        qr = qrcode.QRCode(
            version=1,
            error_correction=qrcode.constants.ERROR_CORRECT_H,
            box_size=5,
            border=4,
        )
    
        # 添加数据
        qr.add_data(data)
        # 填充数据
        qr.make(fit=True)
        # 生成图片
        img = qr.make_image(fill_color="green", back_color="white")
    
        # 添加logo,打开logo照片
        icon = Image.open("1.jpg")
        # 获取图片的宽高
        img_w, img_h = img.size
        # 参数设置logo的大小
        factor = 6
        size_w = int(img_w / factor)
        size_h = int(img_h / factor)
        icon_w, icon_h = icon.size
        if icon_w > size_w:
            icon_w = size_w
        if icon_h > size_h:
            icon_h = size_h
        # 重新设置logo的尺寸
        icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
        # 得到画图的x,y坐标,居中显示
        w = int((img_w - icon_w) / 2)
        h = int((img_h - icon_h) / 2)
        # 黏贴logo照
        img.paste(icon, (w, h), mask=None)
        # 终端显示图片
        plt.imshow(img)
        plt.show()
        # 保存img
        img.save(file_name)
        return img
    
    
    if __name__ == '__main__':
        getQRcode("世情薄,人情恶,雨送黄昏花易落。晓风干,泪痕残,欲笺心事,独语斜阑。"
                  "难,难,难!人成各,今非昨,病魂常似秋千索。角声寒,夜阑珊,怕人寻问,咽泪装欢。瞒,瞒,瞒!", 'my.png')
  • 相关阅读:
    AnaConda环境下安装librosa包超时
    [浙江大学数据结构]多项式求值,及算法效率问题
    java正则表达式测试用例
    tK Mybatis 通用 Mapper 3.4.6: Example 新增 builder 模式的应用
    Detect image format in Java(使用java探测图片文件格式)
    使用ColumnType注解解决/过滤/转义tk mybatis插入insertSelective、insert语句中遇到sql关键字
    IDEA中关闭sonar代码质量检测
    pip设置安装源
    无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
    sql 查出一张表中重复的所有记录数据
  • 原文地址:https://www.cnblogs.com/lab-zj/p/13321469.html
Copyright © 2020-2023  润新知