Python使用QRCode生成二维码,qrcode会依赖Image这个包,所以我们首先安装qrcode和Image:
pip install qrcode
pip install Image
首先我们来写一个最简单的案例,生成一个内容为
hello sunxiaoning
的二维码,保存到本地,执行以下脚本,就可以生成一个hello.png的文件,并且自动打开。我们扫描之后就可以看到二维码里面的内容了。是不是很简单啊,人生苦短,我用python。import qrcode img = qrcode.make('hello sunxiaoning') # 保存二维码 img.save('hello.png') # 展示二维码 img.show()
我们在来设置一个中间带有头像的二维码,我们要先安装下Pillow。使用
pip install Pillow
即可。import qrcode from PIL import Image qr = qrcode.QRCode( version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=5, border=4, ) # 添加数据 qr.add_data('Hello sunxiaoning') # 填充数据 qr.make(fit=True) # 生成图片 img = qr.make_image(fill_color="orange", back_color="white") # 添加头像,打开头像照片 icon = Image.open("1.jpeg") # 获取图片的宽高 img_w, img_h = img.size # 参数设置头像的大小 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 # 设置头像的尺寸 icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS) w = int((img_w - icon_w) / 2) h = int((img_h - icon_h) / 2) # 粘贴头像 img.paste(icon, (w, h), mask=None) # 保存img img.save('hello.png') # 展示二维码 img.show()
参数详解
version
控制二维码的大小,取值范围从1到40。取最小值1时,二维码大小为21*21。取值为 None (默认)或者使用fit=true
参数(默认)时,二维码会自动调整大小。error_correction
控制二维码纠错级别。ERRORCORRECTL
大约7%或者更少的错误会被更正。ERRORCORRECTM
默认值,大约15%或者更少的错误会被更正。ERRORCORRECTQ
大约25%或者更少的错误会被更正。ERRORCORRECTH
大约30%或者更少的错误会被更正。
box_size
控制二维码中每个格子的像素数,默认为 10。border
控制二维码四周留白包含的格子数,默认为 4。image_factory
选择生成图片的形式,默认为 PIL 图像。mask_pattern
选择生成图片的的掩模。
方法详解
add_data(str,optimize=20)
添加要转换的文字到data参数;如果使用了optimize优化参数,数据将被拆分为多个块来进行优化,以找到一个长度至少为这个值的足够简洁的方式来生成二维码。设置为“0”以避免优化。make(fit=True)
当fit参数为真或者没有给出version参数时,将会调用bestfit方法来找到适合数据的最小尺寸。如果没有设置maskpattern,将会调用bestmaskpattern方法来找到找到最有效的掩模图案。最后将这些数据传递给makeImpl方法来生成二维码。与qrcode本体的make方法不一样的是,这个方法没有任何返回值。makeimage(fillcolor=None, backcolor=None,imagefactory=None)
:创建二维码的图像并返回,默认为 PIL 图像。可以在这里设置二维码的颜色。clear
清空所有数据。get_matrix
返回二维码数组。print_ascii(out=None, tty=False, invert=False)
可以用字符画的形式来输出二维码,但是需要注意的是扫的时候不一定可以扫出来,谨慎使用。