为了账号安全,请及时绑定邮箱和手机立即绑定

python之qrcode模块生成二维码

标签:
Python

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

一、前期准备:

  • pip install qrcode

qrcode 依赖 Image 这个包:

  • pip install Image

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

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

生成的二维码:


webp

text.png

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

生成的二维码:


webp

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 qrcodefrom PIL import Imageimport matplotlib.pyplot as pltdef 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 imgif __name__ == '__main__':
    getQRcode("世情薄,人情恶,雨送黄昏花易落。晓风干,泪痕残,欲笺心事,独语斜阑。"
              "难,难,难!人成各,今非昨,病魂常似秋千索。角声寒,夜阑珊,怕人寻问,咽泪装欢。瞒,瞒



作者:SlashBoyMr_wang
链接:https://www.jianshu.com/p/c0073c6aa544


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消