趣味python-二维码神器
摘要:今天要给大家分享的干货是生成二维码的神器。主要介绍了两种,一种是(估)简(计)易(你)版(们)的(也)二(看)维(不)码(上),还有一种就是进阶版的。请赶紧拿麻袋来打包带走,不用客气。
三成功力生成的二维码
1'''
2#
3# Copyright:PisCO菜鸟成长
4# Author: cainiao_001
5# Date:2020-08-01
6# Description:test
7#
8'''
9#!/usr/bin/python
10# -*- coding: UTF-8 -*-
11
12import qrcode
13
14data = 'https://www.baidu.com/' # 二维码内容(链接地址或文字)
15img = qrcode.make(data=data) # 生成二维码
16img.show() # 显示二维码
17#img.save('saveqr.jpg') # 保存二维码
成功了,是不是很简单?几行代码就搞定了。感兴趣的小伙伴可以尝试扫描这个二维码,显示的是百度页面。当然,想要自己试试的话,先安装qrcode库:
1pip install qrcode
五成功力生成的二维码
1'''
2#
3# Copyright:PisCO菜鸟成长
4# Author: cainiao_001
5# Date:2020-08-01
6# Description:test
7#
8'''
9#!/usr/bin/python
10# -*- coding: UTF-8 -*-
11
12from PIL import Image
13import qrcode
14
15qr = qrcode.QRCode(
16 version=2,
17 error_correction=qrcode.constants.ERROR_CORRECT_H,
18 box_size=12,
19 border=3,
20 image_factory=None,
21 mask_pattern=None,
22)
23
24qr.add_data('https://www.baidu.com/')
25qr.make(fit=True) # 启用二维码颜色设置
26
27#填充背景色为白色,二维码主体色为蓝色
28img = qr.make_image(fill_color='blue', back_color='white')
29img = img.convert("RGBA") #将二维码图像转化为RGBA格式,为32位彩色图像
30
31icon = Image.open("D:\\lufei.png") #打开logo照片
32img_w, img_h = img.size #获取二维码图片的宽高
33
34#设置logo的大小
35denominator = 3 #logo将占整个二维码面积的1/3
36size_w = int(img_w / denominator)
37size_h = int(img_h / denominator)
38icon_w, icon_h = icon.size
39if icon_w > size_w:
40 icon_w = size_w
41if icon_h > size_h:
42 icon_h = size_h
43
44#重新设置logo的尺寸,将其缩放为icon_w*icon_h大小
45icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
46w = int((img_w - icon_w) / 2) #计算二维码中心处的坐标
47h = int((img_h - icon_h) / 2)
48icon = icon.convert("RGBA") #将logo转化为RGBA格式
49
50img.paste(icon, (w, h),icon) #将logo图片粘贴到二维码中央
51img.show()
效果图如下:
-
若将30~50行注释掉将会仅显示一张白底蓝色二维码图片。也就是说,30~50行在做的事情就是将lufei.png图片转化后,粘贴在二维码的中心; -
logo的大小能不能设置成占整个二维码面积的1/2?答:不能。通俗地讲,二维码和lufei.png是两个不同的图片,将两个图片叠加在一起将会掩盖一部分二维码,就可能造成二维码无法识别。所以,这里有个容错率的概念。 下载新的库PIL,用于处理图像:
1pip install PIL
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
九成功力生成的二维码
1'''
2# Copyright:PisCO菜鸟成长
3# Author: cainiao_001
4# Date:2020-08-01
5# Description:test
6#
7'''
8#!/usr/bin/python
9# -*- coding: UTF-8 -*-
10
11from MyQR import myqr #注意大小写
12
13myqr.run(
14 words='http://www.baidu.com/',#扫描二维码后,显示的内容,或是跳转的链接
15 version=5, #设置容错率
16 level='H', #控制纠错水平,范围是L、M、Q、H,从左到右依次升高
17 picture='D:\\lufei.png', #图片所在目录,可以是动图
18 colorized=True, #黑白(False)还是彩色(True)
19 contrast=1.0, #用以调节图片的对比度,1.0 表示原始图片。默认为1.0。
20 brightness=1.0, #用来调节图片的亮度,用法同上。
21 save_name='D:\\Python.png' #控制输出文件名
22)
我敢肯定,你们肯定还想要更有趣的,比如说动图二维码。那就把珍藏多年的女神图片贡献出来满足你们一下下吧:
方法就是,给第17行picture参数选择一个.gif动图即可。你们那么聪明,其他的就不再过多解释了。笔者还赶着去吃小龙虾。另外,注意pip一下新的库:
1pip install MyQR
总结
使用qrcode库生成的二维码,简单明了,库中可用的属性不多。
MyQR库可用动图来生成二维码,代码也更加简洁。
生成二维码时都需要考虑容错率,避免无法识别的问题。
end
往期推荐