python二维码生成模块_python之qrcode模块生成二维码

用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)

生成的二维码:

text.png

import qrcode //模块导入

//调用qrcode的make()方法传入url或者想要展示的内容

img = qrcode.make('欢迎来到我的简书')

//保存

img.save("text.png")

生成的二维码:

text.png

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

- 2. 正常生成二维码的步骤:

创建QRCode对象

add_data()添加数据

make_image()创建二维码(返回im类型的图片对象)

自动打开图片,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')

最后,送你一首宋词,扫码免费得!!!

my.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值