[273]python生成个性二维码

更多精选文章,请关注公众号:python前行者
python前行者

现在,我们生活中到处可以看到二维码。它有啥好处呢?它具有信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。

我们生成的东西一般都在电脑上。如果弄到移动设备上,用到最多的是扫码。在移动设备浏览器中输入URL明显没有扫描二维码方便。

就是这个:

image.png

python 有qrcode库,很容易就生成二维码。现在在需要使用Python图像库的时候一般是用 Pillow 模块代替PIL。安装非常简单:

pip install pillow

安装 qrcode 也是类似:

pip install qrcode

在Python中也可以用如下的方式快速生成:

import qrcode

# 方法1
def qr_code_1():
    #调用qrcode的make()方法传入url或者想要展示的内容
    img = qrcode.make('https://blog.csdn.net/xc_zhou')
    #保存
    img.save("./img/text1.png")
    # 或者
    with open('./img/test2.png', 'wb') as f:
        img.save(f)
        
qr_code_1()

更高级一些的设置需要在Python中引入QRCode类:

  • 示例代码1:
import qrcode

# 方法2
def qr_code_2():
    '''
    参数 version 表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码矩阵,
    version 每增加 1,生成的二维码就会添加 4 个单位大小,例如 version 是 2,则生成 25 * 25 尺寸大小的二维码。

    参数 error_correction 指定二维码的容错系数,分别有以下4个系数:
    ERROR_CORRECT_L: 7%的字码可被容错
    ERROR_CORRECT_M: 15%的字码可被容错
    ERROR_CORRECT_Q: 25%的字码可被容错
    ERROR_CORRECT_H: 30%的字码可被容错

    参数 box_size 表示二维码里每个格子的像素大小。
    参数 border 表示边框的格子宽度是多少(默认是4)
    '''
    # 实例化QRCode生成qr对象
    qr = qrcode.QRCode(
        version=2,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=1
    )
    # 调用qrcode的make()方法传入url或者想要展示的内容
    qr.add_data("python前行者公众号")
    qr.make(fit=True)# 填充数据
    img = qr.make_image() # 生成图片
    img.save("./img/test3.png")

qr_code_2()

生成的结果为:


微信扫描的结果是:

参数 version 表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码矩阵,version 每增加 1,生成的二维码就会添加 4 个单位大小,例如 version 是 2,则生成 25 * 25 尺寸大小的二维码。

参数 error_correction 指定二维码的容错系数,分别有以下4个系数:
ERROR_CORRECT_L: 7%的字码可被容错
ERROR_CORRECT_M: 15%的字码可被容错
ERROR_CORRECT_Q: 25%的字码可被容错
ERROR_CORRECT_H: 30%的字码可被容错

参数 box_size 表示二维码里每个格子的像素大小。
参数 border 表示边框的格子宽度是多少(默认是4)。

示例代码2(生成带有图标的二维码):

# -*- coding:utf-8 -*-
import qrcode,time
from PIL import Image
import matplotlib.pyplot as plt


# 方法3  生成带有图标的二维码
def qr_code_3():
    # 实例化QRCode生成qr对象
    qr = qrcode.QRCode(
        version=2,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=1
    )
    qr.add_data("https://blog.csdn.net/xc_zhou")# 添加数据
    qr.make(fit=True)# 填充数据
    # 生成图片
    # img = qr.make_image()
    img = qr.make_image(fill_color="green", back_color="white")
    img = img.convert("RGBA")
    # 添加logo,打开logo照片
    icon = Image.open("我的头像.jpg").convert("RGBA")
    # 获取图片的宽和搞
    img_w, img_h = img.size
    # 参数设置logo的大小
    factor = 3
    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)
    '''
    img.paste(path,where,mask=None)
    其中,img为image对象;path为所添加图片;where为tuple,如:(x,y),表示图片所在二维码的横纵坐标
    '''
    # 黏贴logo照
    img.paste(icon, (w, h), icon)
    img.save("我的CSDN二维码.png")
    # img.show()# 自动打开图片
    # 终端显示图片
    plt.imshow(img)
    plt.show()

if __name__=='__main__':
    qr_code_3()

如此,就将以下图片
在这里插入图片描述

生成二维码:

在这里插入图片描述
如果是下载URL,扫描后就可以直接下载了。
放到jenkins上,每次生成的build,直接扫码就可以下载到手机上了。

code

# -*- coding:utf-8 -*-
import qrcode,time
from PIL import Image
import matplotlib.pyplot as plt


# 方法1
def qr_code_1():
    #调用qrcode的make()方法传入url或者想要展示的内容
    img = qrcode.make('https://blog.csdn.net/xc_zhou')
    #保存
    img.save("./img/text1.png")
    # 或者
    with open('./img/test2.png', 'wb') as f:
        img.save(f)

# 方法2
def qr_code_2():
    '''
    参数 version 表示生成二维码的尺寸大小,取值范围是 1 至 40,最小尺寸 1 会生成 21 * 21 的二维码矩阵,
    version 每增加 1,生成的二维码就会添加 4 个单位大小,例如 version 是 2,则生成 25 * 25 尺寸大小的二维码。

    参数 error_correction 指定二维码的容错系数,分别有以下4个系数:
    ERROR_CORRECT_L: 7%的字码可被容错
    ERROR_CORRECT_M: 15%的字码可被容错
    ERROR_CORRECT_Q: 25%的字码可被容错
    ERROR_CORRECT_H: 30%的字码可被容错

    参数 box_size 表示二维码里每个格子的像素大小。
    参数 border 表示边框的格子宽度是多少(默认是4)
    '''
    # 实例化QRCode生成qr对象
    qr = qrcode.QRCode(
        version=2,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=1
    )
    # 调用qrcode的make()方法传入url或者想要展示的内容
    qr.add_data("python前行者公众号")
    qr.make(fit=True)# 填充数据
    img = qr.make_image() # 生成图片
    img.save("./img/test3.png")

# 方法3  生成带有图标的二维码
def qr_code_3():
    # 实例化QRCode生成qr对象
    qr = qrcode.QRCode(
        version=2,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=1
    )
    qr.add_data("https://blog.csdn.net/xc_zhou")# 添加数据
    qr.make(fit=True)# 填充数据
    # 生成图片
    # img = qr.make_image()
    img = qr.make_image(fill_color="green", back_color="white")
    img = img.convert("RGBA")
    # 添加logo,打开logo照片
    icon = Image.open("我的头像.jpg").convert("RGBA")
    # 获取图片的宽和搞
    img_w, img_h = img.size
    # 参数设置logo的大小
    factor = 3
    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)
    '''
    img.paste(path,where,mask=None)
    其中,img为image对象;path为所添加图片;where为tuple,如:(x,y),表示图片所在二维码的横纵坐标
    '''
    # 黏贴logo照
    img.paste(icon, (w, h), icon)
    img.save("我的CSDN二维码.png")
    # img.show()# 自动打开图片
    # 终端显示图片
    plt.imshow(img)
    plt.show()


if __name__=='__main__':
    qr_code_2()

python生成动态个性二维码

pip install myqr

1、生成普通二维码

安装了 myqr 之后,就可以在命令行中使用它了。假如我想要将 http://www.rablive.cn 字符串生成一个二维码,则只需要将在命令行中输入以下命令即可:

myqr http://www.rablive.cn

运行后,myqr 会将生成的二维码保存在当前路径下,名称为 qrcode.png

2、带图片的二维码

如果想要生成艺术二维码,则可以使用 -p 参数指定图片,将二维码与该图片结合在一起

myqr http://www.rablive.cn -p rablive.png

默认生成的结果是黑白的,如果想要生成彩色的,可以加上参数 -c。

myqr http://www.rablive.cn -p rablive.png -c -n rablive_qrcode_c.png

3、动态GIF二维码

如果想要生成动态GIF二维码,方式与上面的带图片的二维码的生成方式没有区别,只是将原始的 png/.jpg 图片换成 gif 即可。

参考:https://www.jianshu.com/p/30b6ec813b4f
https://www.jianshu.com/p/c0073c6aa544

  • 21
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值