首页 > 编程语言 >使用Python生成二维码

使用Python生成二维码

时间:2024-04-15 10:46:37浏览次数:20  
标签:img Python make segno 二维码 qrcode save 生成

1、背景

上一次我们介绍了什么是二维码,读过这篇文章以后,相信大家对二维码已经有了一定的认识,那么有没有想过如何自己动手生成二维码呢?二维码在我们的生活与工作中,都能够做什么呢?今天我们来探讨一下用Python如何生成二维码。

2、使用哪些库

Python具有丰富的第三方库,能够生成二维码的就有qrcode库、segno库、pystrich库、myqr库。

其中segno是一个纯python语言开发的二维码和微二维码生成器。常用的还有qrcode库,功能也很丰富。pystrich库作者好久都没有进行更新,不建议继续使用。myqr库可以生成基本二维码、彩色二维码和动态二维码。今天我们主要介绍segno,它支持python2.7和python3.5+,使用时请注意自己的python版本。其他模块感兴趣的小伙伴可以自行探索一下。

 


 

3、如何安装

安装时与其他python模块一样,使用pip命令安装即可

# 安装segno库
pip insyall segno

# 指定版本安装
pip insyall segno==0.3.2


4、如何使用

4.1、 segno常见使用方法

  参数 说明
make_qr 内容 生成二维码
make_micro 内容 生成微二维码
make micro 生成二维码,默认生成微二维码
version 指定二维码版本,默认为1
error=‘级别’,boost_error=False 指定二维码纠错级别(L、M、Q、H),默认为L级别
mask 指定数据掩码,默认为最佳掩码
save 文件名称与格式 将二维码保存为指定格式的文件
border 指定二维码边框,为None时将使用默认值
scale 指定序列化缩放因子,默认为1
dark=‘颜色’, light='颜色' 指定暗模块和亮模块的颜色
kind 保存到流

4.2、 使用示例

4.2.1、 基本使用

import segno

# 因为segno不仅能够生成二维码,还能够生成微二维码,默认生成微二维码,micro为False将强制生成二维码
qrcode = segno.make("Hello World!", micro=False)

# 或使用函数:segno.make_qr()创建二维码
qrcode = segno.make_qr("Hello World!")

# 注意:因为汉字模式不在ISO/IEC 18004范围内,因此二维码阅读器并未广泛支持它,在使用时应谨慎。
# 此外汉字模式不适用微二维码。
qrcode = segno.make("你好!", micro=False, mode='hanzi')

# 查看默认版本
print(qrcode.version) # 1

# 明确指定错误级别L,不允许自动提高错误级别
qrcode = segno.make('Hello World!',
                    error='l', boost_error=False)
print(qrcode.designator)  # 1-L

# 指定掩码
qrcode = segno.make("Hello World!", micro=False, mask=1)
print(qrcode1.mask)  # 1

# 保存二维码
qrcode = segno.save("Hello World.png")  # 生成图片

# 支持序列为其他格式保存
qrcode.save('hello.svg')  # svg文件
qrcode.save('hello.txt')  # text文件

# 指定二维码边框
qrcode.save('hello_default.png', border=None)  # 默认值
qrcode.save('hello_none.png', border=0)  # 无边框
qrcode.save('hello_big.png', border=5)  # 大边框

# 指定缩放因子
qrcode.save('hello.png', scale=10)  # 1模块大小 == 10 像素
qrcode.save('hello.svg', scale=2.4)  # svg可以接受浮点值,png赋值浮点值时,将会归整为2

 


 

正常二维码

 


 

无边框

 


 

大边框

// svg格式
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="29" height="29" class="segno"><path class="qrline" stroke="#000" d="M4 4.5h7m1 0h4m2 0h7m-21 1h1m5 0h1m1 0h1m2 0h1m2 0h1m5 0h1m-21 1h1m1 0h3m1 0h1m2 0h3m2 0h1m1 0h3m1 0h1m-21 1h1m1 0h3m1 0h1m1 0h1m1 0h3m1 0h1m1 0h3m1 0h1m-21 1h1m1 0h3m1 0h1m2 0h1m1 0h1m2 0h1m1 0h3m1 0h1m-21 1h1m5 0h1m2 0h4m1 0h1m5 0h1m-21 1h7m1 0h1m1 0h1m1 0h1m1 0h7m-13 1h5m-13 1h1m1 0h2m1 0h3m1 0h4m1 0h1m2 0h1m1 0h2m-20 1h1m1 0h1m1 0h1m1 0h4m1 0h7m1 0h1m-21 1h1m1 0h1m2 0h2m2 0h1m1 0h1m1 0h1m1 0h1m3 0h2m-20 1h2m4 0h2m1 0h1m4 0h1m1 0h1m1 0h1m-19 1h1m1 0h4m1 0h3m1 0h3m5 0h1m-13 1h1m1 0h2m2 0h2m2 0h1m-19 1h7m1 0h1m1 0h1m2 0h4m-17 1h1m5 0h1m1 0h1m2 0h3m1 0h1m1 0h2m-19 1h1m1 0h3m1 0h1m2 0h3m5 0h3m-20 1h1m1 0h3m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m2 0h3m-20 1h1m1 0h3m1 0h1m1 0h2m2 0h1m2 0h1m2 0h1m-19 1h1m5 0h1m2 0h3m1 0h4m3 0h1m-21 1h7m1 0h4m1 0h3m2 0h1"/></svg>

4.2.2、 进阶使用

指定暗模块颜色

import segno

qrcode = segno.make_qr("Hello World!")

# 指定暗模块的颜色
qrcode.save("hello_color.png", dark="#ccc")

 

 

指定暗模块

指定暗模块和亮模块的颜色

import segno

qrcode = segno.make_qr("Hello World!")

# 指定暗模块和亮模块的颜色
qrcode.save('hello_color.png', dark='darkred', light='lightblue')

 

 

指定暗模块和亮模块

添加logo

import segno
from PIL import Image # python画图的库
# 安装:pip install pillow, m1使用:arch -x86_64 pip3 install Pillow 

qrcode = segno.make_qr("Hello World!")

# 保存到流
buff = io.BytesIO()
qrcode.save(buff, kind='png', dark='darkblue', light='#eee')
buff.seek(0)
img = Image.open(buff).convert('RGB')
img_width, img_height = img.size
logo_max_size = img_height // 3  # logo尺寸
logo_img = Image.open('./13.png')  # logo照片
# 调整logo大小
logo_img.thumbnail((logo_max_size, logo_max_size), Image.Resampling.LANCZOS)
# 计算二维码中心位置
box = ((img_width - logo_img.size[0]) // 2, (img_height - logo_img.size[1]) // 2)
# 组合图片
img.paste(logo_img, box)
# 保存
img.save('qrcode_with_logo.png')

 

 

添加logo

4.3、 使用场景

4.3.1、 快速连接WIFI

from segno import helpers

wifi_settings = {
    "ssid": '(wifi名称)',
    "password": '(wifi密码)',
    "security": 'WPA',
    "hidden": False. # 是否是隐藏wifi
}

wifi = helpers.make_wifi(wifi_settings)

# 注意:微信扫描时只能读取信息,使用手机自带的二维码相机扫描,能够弹窗直接连接wifi。
wifi.save("wifi.png", dark="yellow", light="#323524", scale=10)

 

 

Wi-Fi信息

4.3.2、 快速发送邮件

from segno import helpers

qrcode = helpers.make_email(
    to='[email protected]',  # 收件人,字符串或者可迭代字符串
    cc='[email protected]',  # 抄送人,字符串或者可迭代字符串
    subject='这是主题',
    body='这是邮件内容'
)

qrcode.save("email.png", scale=10)

 

 

快速发送邮件

4.3.3、 快速添加联系人

from segno import helpers

vcard = helpers.make_vcard(
        name='姓名',  # 联系人姓名
        email=('邮箱地址'),  # 邮箱
        url=['www.jd.com'],  # 主页
        phone='400xxxxxxx'  # 电话号码
    )

vcard.save('vcard.png', dark="#FF7D92", scale=10)

 

 

添加联系人

4.4 其他场景

•物品属性标签 •店铺地址信息 •紧急联系人信息 •挪车二维码 •等等

5、总结

至此,如何使用python生成二维码,通过segno模块的介绍,我们可以快速的生成自己需要的二维码,生活和工作中,我们都能根据自己的需要,生成二维码,从而方便我们,使事情变得更加简单,还有另外几个二维码库没有介绍,感兴趣的小伙伴,可以自行学习一下。

标签:img,Python,make,segno,二维码,qrcode,save,生成
From: https://www.cnblogs.com/Jcloud/p/18135396

相关文章

  • python secrets 模块
    secrets说明secrets模块用于生成高度加密的随机数,适于管理密码、账户验证、安全凭据及机密数据。生成随机数secrets模块是操作系统提供的最安全地随机性来源。choice(sequence)从非空序列中返回一个安全的随机元素。importsecrets#假设我们有一个元素列表elements=......
  • Python 生成测试数据 - faker 模块
    Python生成测试数据-faker模块摘自:http://notes.zhengxinonly.com/posts/2023-09-04.htmlFaker是一个生成数据的Python库,Faker数据通常用于生成测试数据。初始化操作首先需要安装faker模块pipinstallfakerfaker.Faker()创建并初始化一个伪造的生成器,该伪造器......
  • python使用NVlabs/stylegan3生成图片和视频
    此项目只能随机生成图片,不能以图生图先把源码克隆到本地,https://github.com/NVlabs/stylegan3进入项目文件夹,激活虚拟环境condaenvcreate-fenvironment.ymlcondaactivatestylegan3访问https://pytorch.org/get-started/locally/,根据自己的环境选择在虚拟环境执行pi......
  • Python 超好用的几种 f-string 方式,你都会吗 ?
    Python超好用的几种f-string方式,你都会吗?f-string是Python3.6版本引入的一种字符串格式化方法,它允许我们将变量、表达式直接插入到字符串中。本文将介绍f-string的大部分使用方式,快来检查一下你是否全部都掌握了。基本用法f-string是Python中用于字符串格式化的语......
  • Python里的optparse
    Python里的optparse是一个强大的命令行选项解析库argument--参数在命令行中输入的字符串,并会被shell传给 execl() 或 execv()在Python中,参数将是 sys.argv[1:] 的元素注:sys.argv[0] 是被执行的程序的名称fromoptparseimportOptionParser#定义自己的用......
  • python项目位置迁移后,虚拟环境无法使用
    一、虚拟环境无法使用问题修改虚拟环境目录/pyvenv.cfg文件中的路径修改虚拟环境目录/scripts/activate.bat文件中**VIRTUAL_ENV参数**的值,改为当前虚拟环境的路径。另外,项目路径最好不要带中文,否则会导致虚拟环境无法使用(变成使用环境变量终端python)。来源:https://blog......
  • 苹果(MAC)操作系统(OSX)上设置Python3为Python命令启动的方式
    通过HomeBrew安装的Python启动命令为Python3,pip3HomeBrew安装Python的命令为:brewinstallpython然而,很多脚本里Python的启动命令为Python如何使OSX上的Python3命令通过Python启动呢?1.执行下列命令brewinfopython会得到如下输出信息:==>[email protected]:stable3......
  • python之if语法和for循环
    【语法】 图像   流程控制必备知识1.python中使用代码的缩进来表示代码的从属关系,如果两行代码缩进相同,就认为两代码属于平行关系,执行完上一行代码,就执行下一行代码。2.并不是所有的代码都可以拥有缩进的子代码。可以拥有缩进的子代码的代码有:if关键字3.如......
  • blender使用python创建长凳子模型
    importbpyimportmath#导入math模块#jianmodefjianMo(l,w,h,name='CafeBody',location_x=0,location_y=0,location_z=0):#定义咖啡馆的尺寸cafe_length=l#长度,单位:米cafe_width=w#宽度,单位:米cafe_height=h#高度,单位:米#......
  • blender使用python创建柜子模型
    importbpy#创建立方体并返回对象defcreate_cube(name,dimensions,location,parent=None):#执行添加立方体的操作bpy.ops.mesh.primitive_cube_add(size=dimensions[2],enter_editmode=False,location=location)#选择新创建的立方体cube_object......