'''pip3 install qrcode'''
import qrcode
img = qrcode.make('asfdagasdfasd')
img.save('123.png')
'''
version=None,
error_correction=constants.ERROR_CORRECT_M,
box_size=10,
border=4,
image_factory=None,
mask_pattern=None
上面是按照qrcode默认生成的二维码
version 总共40个版本,最小的版本号为1,对应的尺寸为21*21,每加1 增加4个尺寸(二维码长宽被平均分为多少份)
error_correction
ERROR_CORRECT_MM 15%
ERROR_CORRECT_LL 7%
ERROR_CORRECT_QQ 25%
ERROR_CORRECT_HH 30%
border 最小为4
box_size 生成图片的像素,
'''
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4
)
qr.add_data('czxxxxxxxxxxx')
qr.make(fit=True)
img = qr.make_image(fill_color='red', back_color='blue') #
img.save('1234.png')
#########生成其他类型的二维码
'''
可以生成3中不同的SVG图像
1、 用路径表示的SVG SvgPathImage
2、 用矩形集合表示完整的SVG文件 SvgImage
3、 用矩形集合表示的SVG片段 SvgFragmentImage
'''
import qrcode
import qrcode.image.svg
method = ''
if method == 'basic':
# 简单工厂
factory = qrcode.image.svg.SvgImage
elif method == 'fragment':
# 碎片工厂
factory = qrcode.image.svg.SvgFragmentImage
else:
# 组合路径工厂
factory = qrcode.image.svg.SvgPathImage
img = qrcode.make('xxasdasd', image_factory=factory)
#
# 默认背景为白色
# qrcode.image.svg.SvgFillImage
# qrcode.image.svg.SvgPathFillImage
# coding: utf-8
# pip3 install zbarlight 二维码解析包,py2.7以下版本
import qrcode
from PIL import Image
import os, sys
import zbar
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)
img = qr.make_image()
img = img.convert("RGBA")
if logo and os.path.exists(logo):
try:
icon = Image.open(logo)
img_w, img_h = img.size
except Exception as e:
print(e)
sys.exit(1)
factor = 4
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)
icon = icon.convert("RGBA")
img.paste(icon, (w, h), icon)
img.save(path)
# 调用系统命令打开图片
# xdg - open(opens a file or URL in the user's preferred application)
os.system('xdg-open %s' % path)
def decode_qrcode(path):
"""
解析二维码信息
@参数 path: 二维码图片路径
@return: 二维码信息
"""
# 创建图片扫描对象
scanner = zbar.ImageScanner()
# 设置对象属性
scanner.parse_config('enable')
# 打开含有二维码的图片
img = Image.open(path).convert('L')
# 获取图片的尺寸
width, height = img.size
# 建立zbar图片对象并扫描转换为字节信息
qrCode = zbar.Image(width, height, 'Y800', img.tobytes())
scanner.scan(qrCode)
# 组装解码信息
data = ''
for s in qrCode:
data += s.data
# 删除图片对象
del img
# 输出解码结果
return data
if __name__ == "__main__":
info = "http://www.zut.edu.cn"
pic_path = "qr.png"
logo_path = "logo.png"
#gen_qrcode(info, pic_path,logo_path )
print(decode_qrcode(pic_path))