使用 Python 生成二維碼
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"?>
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 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')
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 模組的介紹,我們可以快速的生成自己需要的二維碼,生活和工作中,我們都能根據自己的需要,生成二維碼,從而方便我們,使事情變得更加簡單,還有另外幾個二維碼庫沒有介紹,感興趣的小夥伴,可以自行學習一下。
相關文章
- 如何使用 Python 生成二維碼?Python
- 二維碼生成-PythonPython
- 使用 Python 生成二維條形碼 QR CodesPython
- Python如何生成個性二維碼Python
- 二維碼管理平臺 生成二維碼
- 使用ABAP程式碼生成二維碼(QR Code)
- PHP、Python、JavaScript 識別二維碼和生成二維碼解決方案PHPPythonJavaScript
- Java使用QRGen類庫生成二維碼Java
- jquery生成二維碼jQuery
- 二維碼線上生成
- Flutter - 生成二維碼與識別二維碼Flutter
- Python生成動態二維碼,MyQR介紹Python
- 一行python生成終端二維碼Python
- 直播系統搭建,java二維碼 生成二維碼Java
- iOS 花式二維碼生成和二維碼識別iOS
- Android 二維碼掃描和生成二維碼Android
- react使用qrcode.react生成二維碼React
- Tp框架 生成二維碼框架
- ios--二維碼生成iOS
- 二維碼生成工具類
- c++生成二維碼C++
- JS線上生成二維碼JS
- 二維碼線上生成工具
- iOS 生成二維碼/條形碼iOS
- Tp生成小程式二維碼
- php生成二維碼圖片PHP
- PHP生成簡單二維碼PHP
- java實現二維碼生成Java
- 利用Google API生成二維碼GoAPI
- jq動態生成二維碼
- 用Python3 QrCode生成一個二維碼Python
- 線上生成二維碼程式碼例項
- APISpace 的二維碼生成器,效果好、使用易API
- 從普通二維碼到檔案生成二維碼的轉變
- iOS開發中使用CIFilter生成二維碼和條形碼iOSFilter
- 微信二次開發(生成二維碼)
- iOS 二維碼生成以及識別iOS
- 根據URL地址生成二維碼