写点什么

使用 Python 生成二维码

  • 2024-04-15
    北京
  • 本文字数:2646 字

    阅读完需:约 9 分钟

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 常见使用方法

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')
复制代码


import segnofrom 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.sizelogo_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')
复制代码

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)
复制代码

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 模块的介绍,我们可以快速的生成自己需要的二维码,生活和工作中,我们都能根据自己的需要,生成二维码,从而方便我们,使事情变得更加简单,还有另外几个二维码库没有介绍,感兴趣的小伙伴,可以自行学习一下。

发布于: 刚刚阅读数: 5
用户头像

拥抱技术,与开发者携手创造未来! 2018-11-20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东云开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
使用Python生成二维码_京东科技开发者_InfoQ写作社区