使用Python打造專屬二維碼的詳細(xì)教程
想象一下這個(gè)場(chǎng)景:你正在負(fù)責(zé)一個(gè)線下活動(dòng)的宣傳物料設(shè)計(jì),需要在海報(bào)、展架、易拉寶上放一個(gè)二維碼。普通的黑白二維碼雖然能用,但總覺(jué)得少了點(diǎn)感覺(jué)——品牌色沒(méi)法體現(xiàn),連個(gè)logo都沒(méi)有。
其實(shí),用Python來(lái)生成既美觀又實(shí)用的二維碼,比你想象的要簡(jiǎn)單得多。今天我們就來(lái)聊聊這件事。
準(zhǔn)備工作:一行代碼搞定
首先要安裝需要用到的庫(kù)。打開(kāi)終端,執(zhí)行:
pip install spire.barcode
安裝完成后,建議聯(lián)系官方申請(qǐng)一個(gè)臨時(shí)許可證。這不是必須的,但有了許可證,生成的二維碼就不會(huì)帶上水印,品質(zhì)也會(huì)更好。
第一個(gè)二維碼:5分鐘就能跑起來(lái)
讓我們從最基礎(chǔ)的開(kāi)始。下面的代碼會(huì)生成一個(gè)包含網(wǎng)址信息的二維碼:
from spire.barcode import *
def save_image(filename, data):
with open(filename, "wb") as f:
f.write(data)
# 激活許可證(替換成你自己的)
License.SetLicenseKey("你的許可證密鑰")
# 配置二維碼參數(shù)
settings = BarcodeSettings()
settings.Type = BarCodeType.QRCode
settings.Data2D = "https://your-website.com"
settings.X = 3 # 控制二維碼的精細(xì)度
settings.ShowText = False # 不顯示底部文字
# 生成并保存
generator = BarCodeGenerator(settings)
image = generator.GenerateImage()
save_image("output/MyFirstQR.png", image)
運(yùn)行這段代碼,你就能在 output 文件夾里找到生成的二維碼圖片了。
讓二維碼更“耐造”:說(shuō)說(shuō)糾錯(cuò)等級(jí)
二維碼有個(gè)很實(shí)用的特性——即使部分區(qū)域被遮擋或污損,仍然可以被識(shí)別。這得益于它的糾錯(cuò)機(jī)制。Spire.Barcode 提供了四個(gè)等級(jí):
| 等級(jí) | 恢復(fù)能力 | 適合場(chǎng)景 |
|---|---|---|
| L | 7% | 短網(wǎng)址、純數(shù)字 |
| M | 15% | 日常使用(推薦) |
| Q | 25% | 需要加logo的情況 |
| H | 30% | 關(guān)鍵信息、惡劣環(huán)境 |
如果你打算在二維碼中間加logo,至少要選Q級(jí)或H級(jí),不然中間那塊空白可能會(huì)影響識(shí)別。
設(shè)置方法很簡(jiǎn)單:
settings.QRCodeECL = QRCodeECL.H # 最高糾錯(cuò)等級(jí)
數(shù)據(jù)編碼模式:別讓中文變成亂碼
二維碼支持多種數(shù)據(jù)編碼方式。雖然通常用"自動(dòng)模式"就能搞定,但了解一下不同模式的區(qū)別還是有必要的:
- Auto(自動(dòng)) :讓庫(kù)自己判斷,省心省力,日常首選
- Numeric(純數(shù)字) :只編碼0-9,效率最高,適合電話號(hào)碼、產(chǎn)品碼
- AlphaNumber(字母數(shù)字) :支持大寫(xiě)字母、數(shù)字和少量符號(hào),適合英文短文本
- Byte(字節(jié)) :支持中文、Emoji等,適合復(fù)雜內(nèi)容
settings.QRCodeDataMode = QRCodeDataMode.Auto # 默認(rèn)選這個(gè)就行
外觀定制:讓二維碼有你的品牌感
黑白配色的二維碼雖然經(jīng)典,但換個(gè)顏色能讓它更融入你的設(shè)計(jì)。下面是一些常用的自定義選項(xiàng):
# 改顏色 settings.BackColor = Color.get_White() settings.ForeColor = Color.get_DeepSkyBlue() # 亮藍(lán)色二維碼 # 加邊框 settings.HasBorder = True settings.BorderWidth = 1 settings.BorderColor = Color.get_Gray() # 調(diào)整邊距(單位:模塊寬度) settings.LeftMargin = 2 settings.RightMargin = 2 settings.TopMargin = 2 settings.BottomMargin = 2 # 設(shè)置打印分辨率(DPI越高越清晰) settings.DpiX = 300 settings.DpiY = 300
小提醒:前景色和背景色要有足夠的對(duì)比度,否則掃碼設(shè)備可能識(shí)別困難。深色前景+淺色背景是最穩(wěn)妥的搭配。
在二維碼下方加文字說(shuō)明
有時(shí)候,我們希望在二維碼下面直接顯示包含的信息,或者加一句提示語(yǔ)。這樣別人即使不掃碼,也能知道這個(gè)二維碼是干什么的。
# 顯示編碼的內(nèi)容
settings.ShowTextOnBottom = True
settings.TextColor = Color.get_Blue()
settings.SetTextFont("微軟雅黑", 12, FontStyle.Bold)
# 或者添加自定義文字
settings.ShowBottomText = True
settings.BottomText = "掃碼關(guān)注我們"
settings.SetBottomTextFont("微軟雅黑", 11, FontStyle.Regular)
settings.BottomTextColor = Color.get_DarkGray()
加Logo:品牌展示的關(guān)鍵一步
很多公眾號(hào)和品牌的二維碼中間都會(huì)有一個(gè)小logo,這其實(shí)也是可以輕松實(shí)現(xiàn)的:
settings.SetQRCodeLogoImage("/path/to/your/logo.png")
就這么一行代碼。Spire.Barcode 會(huì)自動(dòng)處理logo的大小和位置,把它放在二維碼的正中央。
有幾個(gè)小建議:
- 用簡(jiǎn)單、輪廓清晰的logo,太復(fù)雜的圖案會(huì)影響識(shí)別
- logo顏色和二維碼前景色最好有明顯區(qū)分
- 加完logo后用手機(jī)掃一下,確保沒(méi)問(wèn)題
完整示例:一張漂亮的帶Logo二維碼
把上面講的內(nèi)容串起來(lái),一個(gè)相對(duì)完整的例子大概長(zhǎng)這樣
from spire.barcode import *
def save_image(filename, data):
with open(filename, "wb") as f:
f.write(data)
License.SetLicenseKey("你的許可證密鑰")
settings = BarcodeSettings()
settings.Type = BarCodeType.QRCode
settings.Data2D = "https://your-site.com/special-offer"
settings.QRCodeDataMode = QRCodeDataMode.Auto
settings.QRCodeECL = QRCodeECL.Q # 加logo需要提高糾錯(cuò)等級(jí)
settings.X = 4
# 外觀美化
settings.BackColor = Color.get_White()
settings.ForeColor = Color.get_DarkOrange()
settings.HasBorder = True
settings.BorderWidth = 0.5
# 底部加說(shuō)明
settings.ShowBottomText = True
settings.BottomText = "掃碼領(lǐng)取優(yōu)惠券"
settings.SetBottomTextFont("微軟雅黑", 12, FontStyle.Bold)
# 加logo
settings.SetQRCodeLogoImage("logo.png")
# 生成
generator = BarCodeGenerator(settings)
image = generator.GenerateImage()
save_image("output/PromoQR.png", image)
寫(xiě)在最后
二維碼這個(gè)東西,看著簡(jiǎn)單,但真要做出效果來(lái),還是有一些細(xì)節(jié)需要注意的。
回顧一下幾個(gè)要點(diǎn):
- 糾錯(cuò)等級(jí) :加logo的話至少選Q級(jí)
- 顏色對(duì)比 :前景色要深、背景色要淺
- 分辨率 :打印用途至少300DPI,屏幕顯示72-150就夠了
- 測(cè)試 :做完后用手機(jī)掃一下,確認(rèn)沒(méi)問(wèn)題再投入使用
Spire.Barcode 處理了大部分底層邏輯,我們只需要關(guān)注自己想要的樣式和內(nèi)容。無(wú)論是做活動(dòng)物料、產(chǎn)品包裝,還是內(nèi)部系統(tǒng)開(kāi)發(fā),這套方案應(yīng)該都能滿足需求。
到此這篇關(guān)于使用Python打造專屬二維碼的詳細(xì)教程的文章就介紹到這了,更多相關(guān)Python二維碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Python實(shí)現(xiàn)在PDF文檔中生成并添加二維碼
- Python實(shí)現(xiàn)TOTP動(dòng)態(tài)驗(yàn)證碼和二維碼生成的示例代碼
- Python實(shí)現(xiàn)識(shí)別圖像中的二維碼并糾正傾斜姿態(tài)
- 零基礎(chǔ)實(shí)踐Python調(diào)用支付寶沙箱生成收款二維碼并掃碼支付
- 從零開(kāi)始使用Python自定義生成二維碼和條形碼
- Python使用wxPython開(kāi)發(fā)電腦信息二維碼生成器
- Python使用MyQR生成動(dòng)態(tài)二維碼的示例代碼
- Python使用qrcode庫(kù)實(shí)現(xiàn)生成二維碼的操作指南
相關(guān)文章
numpy迭代數(shù)組nditer的實(shí)現(xiàn)示例
本文詳細(xì)介紹了NumPy庫(kù)中nditer對(duì)象的使用方法,包括逐個(gè)訪問(wèn)數(shù)組元素、控制迭代順序、修改數(shù)組值、使用外部循環(huán)、跟蹤索引、緩沖數(shù)組元素及廣播數(shù)組迭代等內(nèi)容,感興趣的可以了解一下2026-05-05
python函數(shù)中return后的語(yǔ)句一定不會(huì)執(zhí)行嗎?
這篇文章主要給大家詳細(xì)分析講解了關(guān)于python函數(shù)中return語(yǔ)句后的語(yǔ)句是否一定不會(huì)執(zhí)行的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來(lái)學(xué)習(xí)學(xué)習(xí)吧。2017-07-07
Python數(shù)據(jù)結(jié)構(gòu)之單鏈表詳解
這篇文章主要為大家詳細(xì)介紹了Python數(shù)據(jù)結(jié)構(gòu)之單鏈表的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
Pytorch 統(tǒng)計(jì)模型參數(shù)量的操作 param.numel()
這篇文章主要介紹了Pytorch 統(tǒng)計(jì)模型參數(shù)量的操作 param.numel(),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
如何使用Python實(shí)現(xiàn)PPT批量轉(zhuǎn)圖片
這篇文章主要為大家詳細(xì)介紹了如何使用Python開(kāi)發(fā)一個(gè)帶有圖形界面的PPT批量轉(zhuǎn)圖片工具,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下2025-02-02
python循環(huán)監(jiān)控遠(yuǎn)程端口的方法
這篇文章主要介紹了python循環(huán)監(jiān)控遠(yuǎn)程端口的方法,涉及Python實(shí)現(xiàn)端口監(jiān)控的技巧,需要的朋友可以參考下2015-03-03

