• 0
  • 0

生成酷炫二维码

2021-06-30 649 0 admin 所属分类:Python

普通静态二维码 生成

pip install qrcode

导入模块

import os
from PIL import Image
import qrcode

定义函数

def gen_qrcode(text):
    BASE_DIR = r'd:\Users\Administrator\Desktop\test'
    # 创建qrcode对象
    qr = qrcode.QRCode(
        version=2,
        error_correction=qrcode.constants.ERROR_CORRECT_Q,
        box_size=10,
        border=2,
    )

    qr.add_data(text)

    # 创建二维码图片
    img = qr.make_image()

    # 图片转换为RGBA格式
    img = img.convert('RGBA')

    # 返回二维码图片的大小
    img_w, img_h = img.size

    # 打开logo
    logo = Image.open(os.path.join(BASE_DIR, 'static/images/logo.jpg'))

    # logo大小为二维码的四分之一
    logo_w = img_w // 4
    logo_h = img_w // 4

    # 修改logo图片大小
    logo = logo.resize((logo_w, logo_h), Image.ANTIALIAS)

    # 把logo放置在二维码中间
    w = (img_w - logo_w) // 2
    h = (img_h - logo_h) // 2

    img.paste(logo, (w, h))

    qr_path = 'static/imgcard/%s.png' % time.time()
    img.save(os.path.join(BASE_DIR, qr_path))

    return qr_path

调用生成

print(gen_qrcode("这是静态二维码"))


参数 说明 
 version 值为1~40的整数,控制二维码的大小
 error_correction 控制二维码的错误纠正功能
  ERROR_CORRECT_L:大约7%或更少的错误能被纠正
  ERROR_CORRECT_M(默认):大约15%或更少的错误能被纠正
  ROR_CORRECT_H:大约30%或更少的错误能被纠正
  ERROR_CORRECT_Q
 box_size 控制二维码中每个小格子包含的像素数
 border 控制边框(二维码与图片边界的距离)包含的格子数(默认为4,是相关标准规定的最小值)

动态二维码生成

pip install myqr

导入模块

from MyQR import myqr

调用库方法实现

myqr.run(
    words='hello', # words中填写链接或者文本内容   接口不支持中文  如果想存储中文 需要 转码
    version=1,  # 控制二维码大小 1~40,建议不要超过5,否则生成时间太长
    level='H',  # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高
    picture='d:\Users\Administrator\Desktop\test\static\images\logo.gif',  # 背景图片,格式可以是.jpg, .png, .bmp, .gif
    colorized=True,  # 可以使产生的图片由黑白(False)变为彩色(True)的
    contrast=1.0,  # 用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0。
    brightness=1.0,  # 用来调节图片的亮度
   save_name="demo.gif",# 可空 默认文件名为 qrcode.png
    save_dir=r'd:\Users\Administrator\Desktop\test\static\imgcard',# 可空 默认为当前存储目录
)

如果需要存储中文可以如下

编码为utf8风格的二进制数据再转为字符型

str("帅哥".encode("utf-8"))

或者 url 编码

from urllib import parse
parse.quote('帅哥')

缺点就是没法直接解析 还有就是生成gif动态图 保存的图片格式也得是gif

该库无法直接指定图片大小 需要修改源码 进入 myqr.py 文件 找到

qr.resize((qr.size[0]*3, qr.size[1]*3)).save(qr_name)

修改为你要的大小 如 400*400

qr.resize((400, 400)).save(qr_name)


可以直接在命令行 调用该模块

直接生成二维码 图片保存在当前目录 文件名为 qrcpde.png

myqr 你的内容

直接生成待背景的二维码 图片保存在当前目录 文件名为 logo_qrcode.png

myqr 你的内容 -p logo路径  -c


返回顶部