我们用以下例题来引入
题目要求:生成带有图标的二维码,图标为自己设置的照片,扫描后打开某个网站。(如平顶山学院的网站http://www.pdsu.edu.cn)
在编程之前,我们需要安装pillow和qrcode库;
方法一:打开cmd,利用
pip install pillow
命令安装。(安装qrcode库同上)
方法二:
打开pycharm——>File——>Settings,如下图,在
点击+号后在上方搜索需要安装的库(如图
)
(我这里已经安装过了)
然后开始编写程序
import qrcode
from PIL import Image
import os, sys
def gen_qrcode(string, path, logo=""):
"""
生成中间带logo的二维码
需要安装qrcode, PIL库
@参数 string: 二维码字符串
@参数 path: 生成的二维码保存路径
@参数 logo: logo文件路径
@return: None
"""
# 初步生成二维码图像
qr = qrcode.QRCode(
version=2,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=8,
border=1
)
qr.add_data(string)
qr.make(fit=True)
# 互动二Image实例并把颜色模式转换成RGBA
img = qr.make_image()
img = img.convert("RGBA")
if logo and os.path.exists(logo):
try:
icon = Image.open(logo) #打开logo文件
img_w, img_h = img.size
except Exception as e:
print(e)
sys.exit(1)
factor = 4
#计算logo尺寸
size_w = int(img_w / factor)
size_h = int(img_h / factor)
#比较并重新设置logo文件(图片pdsu.png)的尺寸
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)
#计算logo的位置,并且复制到二维码中
w = int((img_w - icon_w) / 2)
h = int((img_h - icon_h) / 2)
icon = icon.convert("RGBA")
img.paste(icon, (w, h), icon)
img.save(path) #保存二维码qr.png
# 调用系统命令打开图片
os.system('start %s' % path)
if __name__ == "__main__":
info = "http://www.pdsu.edu.cn"
pic_path = "qr.png" #生成带有图标的二维码
icon_path = "pdsu.png" #用于填充的图标
gen_qrcode(info, pic_path, icon_path )
效果图:(我添加的是一个学校的官网图,如下)
需要代码段部分都有注释,其实生成二维码部分很简单,添加logo图标主要需要计算尺寸,计算logo位置,但是这些可以套用,初步学习的时候可以直接套用,在最后填充部分选择自己想要添加的图片即可。
还有一点就是扫描后需要打开的一个网页,前期可以用百度了什么的网址,后期可以自己编写网页哦!