百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

使用Python生成二维码

bigegpt 2024-08-08 12:14 2 浏览

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_address@jd.com',  # 收件人,字符串或者可迭代字符串
    cc='recipient_address@jd.com',  # 抄送人,字符串或者可迭代字符串
    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模块的介绍,我们可以快速的生成自己需要的二维码,生活和工作中,我们都能根据自己的需要,生成二维码,从而方便我们,使事情变得更加简单,还有另外几个二维码库没有介绍,感兴趣的小伙伴,可以自行学习一下。

相关推荐

【Docker 新手入门指南】第十章:Dockerfile

Dockerfile是Docker镜像构建的核心配置文件,通过预定义的指令集实现镜像的自动化构建。以下从核心概念、指令详解、最佳实践三方面展开说明,帮助你系统掌握Dockerfile的使用逻...

Windows下最简单的ESP8266_ROTS_ESP-IDF环境搭建与腾讯云SDK编译

前言其实也没啥可说的,只是我感觉ESP-IDF对新手来说很不友好,很容易踩坑,尤其是对业余DIY爱好者搭建环境非常困难,即使有官方文档,或者网上的其他文档,但是还是很容易踩坑,多研究,记住两点就行了,...

python虚拟环境迁移(python虚拟环境conda)

主机A的虚拟环境向主机B迁移。前提条件:主机A和主机B已经安装了virtualenv1.主机A操作如下虚拟环境目录:venv进入虚拟环境:sourcevenv/bin/active(1)记录虚拟环...

Python爬虫进阶教程(二):线程、协程

简介线程线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能...

基于网络安全的Docker逃逸(docker)

如何判断当前机器是否为Docker容器环境Metasploit中的checkcontainer模块、(判断是否为虚拟机,checkvm模块)搭配学习教程1.检查根目录下是否存在.dockerenv文...

Python编程语言被纳入浙江高考,小学生都开始学了

今年9月份开始的新学期,浙江省三到九年级信息技术课将同步替换新教材。其中,新初二将新增Python编程课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法按照教材...

CentOS 7下安装Python 3.10的完整过程

1.安装相应的编译工具yum-ygroupinstall"Developmenttools"yum-yinstallzlib-develbzip2-develope...

如何在Ubuntu 20.04上部署Odoo 14

Odoo是世界上最受欢迎的多合一商务软件。它提供了一系列业务应用程序,包括CRM,网站,电子商务,计费,会计,制造,仓库,项目管理,库存等等,所有这些都无缝集成在一起。Odoo可以通过几种不同的方式进...

Ubuntu 系统安装 PyTorch 全流程指南

当前环境:Ubuntu22.04,显卡为GeForceRTX3080Ti1、下载显卡驱动驱动网站:https://www.nvidia.com/en-us/drivers/根据自己的显卡型号和...

spark+python环境搭建(python 环境搭建)

最近项目需要用到spark大数据相关技术,周末有空spark环境搭起来...目标spark,python运行环境部署在linux服务器个人通过vscode开发通过远程python解释器执行代码准备...

centos7.9安装最新python-3.11.1(centos安装python环境)

centos7.9安装最新python-3.11.1centos7.9默认安装的是python-2.7.5版本,安全扫描时会有很多漏洞,比如:Python命令注入漏洞(CVE-2015-2010...

Linux系统下,五大步骤安装Python

一、下载Python包网上教程大多是通过官方地址进行下载Python的,但由于国内网络环境问题,会导致下载很慢,所以这里建议通过国内镜像进行下载例如:淘宝镜像http://npm.taobao.or...

centos7上安装python3(centos7安装python3.7.2一键脚本)

centos7上默认安装的是python2,要使用python3则需要自行下载源码编译安装。1.安装依赖yum-ygroupinstall"Developmenttools"...

利用本地数据通过微调方式训练 本地DeepSeek-R1 蒸馏模型

网络上相应的教程基本都基于LLaMA-Factory进行,本文章主要顺着相应的教程一步步实现大模型的微调和训练。训练环境:可自行定义,mac、linux或者window之类的均可以,本文以ma...

【法器篇】天啦噜,库崩了没备份(天啦噜是什么意思?)

背景数据库没有做备份,一天突然由于断电或其他原因导致无法启动了,且设置了innodb_force_recovery=6都无法启动,里面的数据怎么才能恢复出来?本例采用解析建表语句+表空间传输的方式进行...