python 二维码

pip3 install Pillow 
pip3 install qrcode
import qrcode
text ="gisoracle我爱你呀" #input("输入文字或URL:")  # 设置URL必须添加http://
img = qrcode.make(text)
img.save(r"d:a.png")  # 保存图片至本地目录,可以设定路径
img.show()
- 2. 正常生成二维码的步骤:
  1. 创建QRCode对象
  2. add_data()添加数据
  3. make_image()创建二维码(返回im类型的图片对象)
  4. 自动打开图片,im.show()
- 3. QRCode参数详细说明:
  • version: 一个整数,范围为1到40,表示二维码的大小(最小值是1,是个12×12的矩阵),如果想让程序自动生成,将值设置为 None 并使用 fit=True 参数即可。
  • error_correction: 二维码的纠错范围,可以选择4个常量:
    ··1. ERROR_CORRECT_L 7%以下的错误会被纠正
    ··2. ERROR_CORRECT_M (default) 15%以下的错误会被纠正
    ··3. ERROR_CORRECT_Q 25 %以下的错误会被纠正
    ··4. ERROR_CORRECT_H. 30%以下的错误会被纠正
  • boxsize: 每个点(方块)中的像素个数
  • border: 二维码距图像外围边框距离,默认为4,而且相关规定最小为4

三、额外添加

往往我们看到的二维码中间都有一张图片或者用户头像,如何才能生成这样一张二维码?

利用PIL库中image模块的paste函数
img.paste(path,where,mask=None)
其中,img为image对象;path为所添加图片;where为tuple,如:(x,y),表示图片所在二维码的横纵坐标

import qrcode

data = 'https://www.cnblogs.com/gisoracle/'
img_file = r'保存路径'

# 实例化QRCode生成qr对象
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4
)
# 传入数据
qr.add_data(data)

qr.make(fit=True)

# 生成二维码
img = qr.make_image()

# 保存二维码
img.save(img_file)
# 展示二维码
img.show()


import qrcode
from PIL import Image
import matplotlib.pyplot as plt


def getQRcode(data, file_name):
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=5,
        border=4,
    )

    # 添加数据
    qr.add_data(data)
    # 填充数据
    qr.make(fit=True)
    # 生成图片
    img = qr.make_image(fill_color="green", back_color="white")

    # 添加logo,打开logo照片
    icon = Image.open("d:/ww.jpg")
    # 获取图片的宽高
    img_w, img_h = img.size
    # 参数设置logo的大小
    factor = 6
    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
    # 重新设置logo的尺寸
    icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS)
    # 得到画图的x,y坐标,居中显示
    w = int((img_w - icon_w) / 2)
    h = int((img_h - icon_h) / 2)
    # 黏贴logo照
    img.paste(icon, (w, h), mask=None)
    # 终端显示图片
    plt.imshow(img)
    plt.show()
    # 保存img
    img.save(file_name)
    return img


if __name__ == '__main__':
    getQRcode("群主我们爱你,群主一会就要给大家发红包,请准备!!!", 'my.png')

 来自:https://www.jianshu.com/p/c0073c6aa544

======================================================

彩色的二维码:

from MyQR import myqr
version, level, qr_name = myqr.run(
words='I Love you', # 不支持中文,支持 0~9,a~z, A~Z 以及常见的常用英文标点符号和空格
version=2, # 版本,从 1至 40
level='H', # 纠错等级,范围是L、M、Q、H,从左到右依次升高
picture=r'd:ww.jpg', # 文件要放在目录下
colorized=True, # True 为彩色,False 为黑白
contrast=1.0, # 对比度
brightness=1.0, # 亮度
save_name='w.png', # 命名随便都行,格式可以是 jpg,png,bmp,gif
save_dir="F:/kktemp/" # 路径要存在
)
=====================================
动态的
from MyQR import myqr
import os

version, level, qr_name = myqr.run(
    #words="https://www.baidu.com",  # 可以是字符串,也可以是网址(前面要加http(s)://)
    words=u"I Love you",
    version=1,  # 设置容错率为最高
    level='H',  # 控制纠错水平,范围是L、M、Q、H,从左到右依次升高
    picture="d:/1.gif",  # 将二维码和图片合成
    colorized=True,  # 彩色二维码
    contrast=1.0,  # 用以调节图片的对比度,1.0 表示原始图片,更小的值表示更低对比度,更大反之。默认为1.0
    brightness=1.0,  # 用来调节图片的亮度,其余用法和取值同上
    save_name="3.gif",  # 保存文件的名字,格式可以是jpg,png,bmp,gif
    save_dir=os.getcwd()  # 控制位置
)
原文地址:https://www.cnblogs.com/gisoracle/p/12020778.html