使用Python生成二维码

京东云开发者
• 阅读 234

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格式

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

点赞
收藏
评论区
推荐文章
Karen110 Karen110
3年前
手把手教你用Python打造一款属于你自己的个性二维码
/前言/在现代社会中,我们出行坐公交经常会看到二维码,支付宝微信收款也会有二维码扫一扫,那么这些二维码是怎样生成的了,今天我们不研究二维码的原理,只教大家如何制作属于自己的二维码。/项目目标/自己用程序打造一款属于自己的个性二维码。/项目准备/编辑器:sublimetext3  浏览器:360浏览器  模块:MyQR/实现步骤/
Aidan075 Aidan075
3年前
如何用python制作动态二维码,来哄女朋友开心?
↑关注星标  有趣的不像个技术号每晚九点,我们准时相约  大家好,我是朱小五如何用python制作动态二维码,来哄女朋友开心?这句话前半部分相信大家已经很熟悉了,很多同学也给自己的网站地址做过图片为底的二维码。后半部分呢?那肯定要增加一些趣味啊,不然岂不是对不起凹凸数据的solgan。先看看在抖音上超级火的视频吧。原
不是海碗 不是海碗
1年前
APISpace 的二维码生成器,效果好、使用易
二维码生成器可以将文本(如URL)或数据存储在二维码图形中。
不是海碗 不是海碗
1年前
一文带你看透二维码生成器
二维码生成器是一种用于生成二维码的工具。它可以将用户提供的信息编码成二维码,包括文字、链接、电话号码、邮件地址、地图等等。
Stella981 Stella981
3年前
Python 生成个性二维码
1.1实验内容本课程通过调用MyQR接口来实现生成个人所需二维码,并可以设置二维码的大小、是否在现有图片的基础上生成、是否生成动态二维码。本课程主要面向Python3初学者。1.2知识点Python3基础MyQR库1.3效果截图1.3.1普通二维码!11.31
Stella981 Stella981
3年前
Android下谷歌zxing二维码的最大容量
使用谷歌的zxing,发现是有最大长度的。超过一定长度,将无法生成像素矩阵,为null,于是也就不能生成二维码了。记录:jar版本:3.2.1手机:联想A808t系统:4.4.2文本编码:"utf8",二维码图片编码:BarcodeFormat.QR\_CODE能生成的的汉字只有449个;能生成的数字有1852个能生成
Wesley13 Wesley13
3年前
thinkphp整合系列之phpqrcode生成二维码
php生成二维码其实挺简单的;当然指的是使用qrcode类库;因此关于是否要写这篇博客;我是犹豫了再三的;不过最后还是决定写下吧;如果有童鞋急着用;就可以直接引了;再个也可以作为即将写的文章微信支付生成的二维码做个铺垫;老规矩;以bjyadmin项目示例:http://git.oschina.net/shuaibai123/thinkphp
wnm wnm
3年前
万能码的作用你想不到(安全扫码专业委员会)
万能码的作用你想不到(安全扫码专业委员会)大家都非常熟悉二维码,二维码又会给你带来什么呢?随着智能手机市场的不断发展,科技不断进步,二维码应运而生,手机二维码营销得到推广。例如在某些商场使用二维码扫描之后可以打折优惠;利用二维码进行点餐等等。二维码与数字的结合,不少商家通过二维码与数字结合起来,通过二维码后完成购买的营销模式。但是它也存在着弊端,市面上二维码
wnm wnm
3年前
万能码不可能中创造可能(安全扫码专业委员会)
万能码不可能中创造可能(安全扫码专业委员会)一个二维码可以带来收益吗?答案是明显的,现如今二维码已经被应用于各个领域,并且它的功能被无限扩大,不仅仅是单纯的支付、点餐等功能,事实证明我们的生活已经离不开二维码了,事实上也的确如此。要知道一个人一天至少会扫一次二维码,因此利用二维码来进行创业是非常好的一个选择。那为什么说万能码能在不可能中创造可能呢?其中的关键
不是海碗 不是海碗
1年前
一口气整理三种不同二维码生成的Java 接入代码
引言二维码已经成为现代社会中广泛应用的一种工具,它们具有快速、可靠和高容量的信息传递能力。通过扫描二维码,用户可以轻松获取网址、产品信息、支付链接等各种信息。本文将介绍二维码生成器API作为一种工具,并探讨其功能和用法,包括普通二维码生成、带图片的艺术二维