使用Python生成二维码(python生成二维码gds)
off999 2024-10-29 14:57 40 浏览 0 评论
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模块的介绍,我们可以快速的生成自己需要的二维码,生活和工作中,我们都能根据自己的需要,生成二维码,从而方便我们,使事情变得更加简单,还有另外几个二维码库没有介绍,感兴趣的小伙伴,可以自行学习一下。
相关推荐
- pc游戏模拟器(pc游戏模拟器推荐)
-
目前,PC游戏模拟器中最受欢迎和认可的是著名的BlueStacks。它是一款免费的安卓模拟器,可以在电脑上运行各种安卓游戏和应用程序。BlueStacks具有卓越的性能和稳定性,提供了流畅的游戏体验,...
- 炉石传说手游官网下载(炉石传说手游官网下载国服)
-
要下载炉石传说端游,可前往该游戏的官方网站或Blizzard官网,从中下载安装程序并安装。同时,玩家也可在国内的一些游戏下载网站上下载该游戏的安装包,但需保证其来源可靠。另外,在下载安装游戏时,可根据...
- 中信建投证券手机版下载(中信建投证券手机版下载什么软件)
-
不好退。1.中信建投证券app是一种金融工具,下载使用后就是用于完成交易和管理投资的,因此一旦下载就意味着启动了使用过程,是不可以退掉的。2.一些软件商店对于使用了特定时间的软件才可以退款,但是中...
- cad破解版在哪里下载(cad破解版怎么下载怎么安装)
-
如果你下载软件的时候,有提示是敲诈的病毒,那么有可能是因为你在下载软件的时候,不是正规渠道下载的,所以你下载的软件会带有病毒,你可以去电脑管家里面找到你的杀毒软件,来对你下载的软件进行病毒的查杀,你也...
- 游戏厅所有老游戏大全(老版游戏厅)
-
这个答案太多了现在比较普遍的应该是:拳皇系列(97,98为主)三国战纪系列,合金弹头系列,飞机系列等等别名:暴风小子、街头风雨用MAME模拟器可以玩到KOF系列的啊,94、95、96、97、98、...
- 163免费邮箱入口(163免费邮箱入口官网)
-
手机163的登录入口163邮箱官网入口是;https://smart.mail.163.com/login.htm网易邮箱注册方法;1在浏览器搜索“网易邮箱”。2进入网易邮箱官网https://sma...
- 一笔签名设计免费版(设计自己的签名免费版)
-
我国法律没有规定签名时要求一笔一划的写,因此,怎么签名这是公民的自由,合同方式协商一致即可。 但是,在实践中,双方当事人签合同时,建议写工整,能让他人认识签名的是谁,另外,最好在名字上按个手印,...
- win10正式版下载官网(win10官网免费下载)
-
先看系统之家之类的系统盘网站提供的系统盘文件,都是Ghost系统盘。所有的Ghost系统盘都是网络上的电脑系统高手以Ghost系统映像文件为基础制作的系统安装盘,在必要的windows安装系统的基础...
- adobe indesign(adobe indesign 下载)
-
在InDesign中,您可以通过使用数据合并功能来快速导入全年日历。首先,您需要准备一个包含所有日期和相应格式的数据表格,然后在InDesign中创建一个日历模板。接下来,使用数据合并功能将数据表格与...
- qq32位版本下载官方(qq3.3.3版本下载)
-
1152活跃天。QQ等级升级需要的活跃天数和自然的日是完全不同的,活跃天并不等于自然天数。活跃天是需要满足加速条件后才能获得的,相当于某些业务的成长值,经验值等,QQ等级由四个标识图展示,从低到高分别...
- 最新版本qq手机版下载安装免费
-
你说的是下载QQ软件吗?现在手机应用市场里都有QQ软件下载的,或者直接百度也可以。不用。苹果手机在appstore里下载手机qq步骤如下:1.在苹果手机中打开自带的AppStore软件进入;2.按...
- 全国34个卫视频道(全国34个卫视频道节目单)
-
全国卫视频道不止34个。全国各地28大省级卫视:北京卫视·天津卫视·河北卫视·山西卫视·内蒙古卫视·辽宁卫视·吉林卫视·黑龙江卫视·江苏卫视·浙江卫视·安徽卫视·江西卫视·山东卫视·河南卫视·湖北卫视...
- 福昕pdf阅读器电脑版(福昕pdf阅读器电脑版怎么用)
-
这是因为你的pdf文件没有与福昕阅读器进行关联。你如果要想双击pdf文档后使用福昕阅读器打开,可以这样设置一下::选中pdf文档,右击鼠标,在快捷菜单中点击属性。点击“属性”对话框中“打开方式”右边的...
- 快吧游戏官网(快吧游戏中心)
-
1.快吧游戏可以通过官方网站或应用商店进行下载。2.官方网站提供了游戏的下载链接,也可以通过扫描二维码进行下载。快吧游戏是一款手机游戏,可以在应用商店中下载安装。以下是在iOS和Android系统...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
