Python 生成二维码图片
HDUZN

直接有第三方的库:qrcode
地址:https://pypi.org/project/qrcode/

生成简单二维码是特别简单,就两步。带logo的麻烦一点,主要是要考虑logo图片的大小啥的。

安装qrcode包和PIL包

1.安装qrcode包

1
pip install qrcode

2.安装PIL包

如果还没有安装PIL的库,运行的时候也会报错,所以也需要安装PIL的库的;而且要用到带Logo的二维码还是要用到图片,要用到PIL的Image对象,所以还是一起安装了。

1
pip install Pillow

生成普通二维码

就简单的两步:

1
2
3
qrcode.make(str):str为二维码包含的文字信息,也可以是网页链接,返回二维码对象
qrcode.save(str):将二维码以str为名保存到本地目录(注意文件的扩展名)
qrcode.show():运行时展示二维码图案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from PIL import Image
import qrcode, os

'''
# pip install qrcode 二维码库
# pip install Pillow 如果报没有这个PIL库,需要安装一下
'''

# 生成普通二维码
def generate_qrcode(content, qcode_pic_path):
# 创建包含信息的二维码对象
img = qrcode.make(content)
img.save(qcode_pic_path) # 二维码保存
# img.show() # 展示二维码

def main():
content = 'https://www.hduzn.cn/'
qcode_pic_path = 'hello.png' # 生成二维码保存的图片
generate_qrcode(content, qcode_pic_path) # 生成普通二维码

main()
# print(os.getcwd()) # 返回当前工作目录

生成带logo的二维码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from PIL import Image
import qrcode, os

# 生成普通二维码
def generate_qrcode(content, qcode_pic_path):
# 创建包含信息的二维码对象
img = qrcode.make(content)
img.save(qcode_pic_path) # 二维码保存
# img.show() # 展示二维码

# 生成带Logo的二维码
def generate_qrcode_logo(content, logo_pic, qcode_pic_path):
# QRCode() 创建对象
# version:值为1~40的整数,控制二维码的大小(最小值是1,是个21×21的矩阵)
# box_size:控制二维码中每个小格子包含的像素数
# border:控制边框(二维码与图片边界的距离)包含的格子数(默认为4)
# error_correction:控制二维码的错误纠正功能。可取值下列4个常量: 
'''
qrcode.constants.ERROR_CORRECT_X:
1. X=L时,大约7%或更少的错误能被纠正。 
2. X=M(默认)时,大约15%或更少的错误能被纠正。
3. X=Q时,25%以下的错误会被纠正。
4. X=H时,大约30%或更少的错误能被纠正。
'''
qr = qrcode.QRCode(
version=5,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=8,
border=4 )
qr.add_data(content) # 向二维码中添加信息
qr.make(fit=True)

img = qr.make_image()
img = img.convert('RGBA') # 二维码设置为彩色
# 二维码尺寸
img_w, img_h = img.size
factor = 4 # 默认LOGO最大设为图片的1/4
# 最大logo尺寸
size_w = int(img_w/factor)
size_h = int(img_h/factor)

with Image.open(logo_pic) as logo:
logo_w,logo_h = logo.size

if logo_w > size_w or logo_h > size_h:
logo_w = size_w
logo_h = size_h

logo = logo.resize((logo_w, logo_h),Image.ANTIALIAS).convert('RGBA')
l_w = int((img_w-logo_w)/2)
l_h = int((img_h-logo_h)/2)

# 替换指定位置
img.paste(logo,(l_w,l_h),logo)
img.save(qcode_pic_path) # 二维码保存
img.show() # 展示二维码

def main():
content = 'https://www.hduzn.cn/'
logo_pic = '.\logo.png'

qcode_pic_path = 'hello.png' # 生成二维码保存的图片
# generate_qrcode(content, qcode_pic_path) # 生成普通二维码
generate_qrcode_logo(content, logo_pic, qcode_pic_path) # 生成带Logo的二维码

main()
# print(os.getcwd()) # 返回当前工作目录

带logo的二维码效果如图所示:

  • 本文标题:Python 生成二维码图片
  • 本文作者:HDUZN
  • 创建时间:2022-06-01 20:38:29
  • 本文链接:http://hduzn.cn/2022/06/01/Python生成二维码图片/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论