Python使用MyQR生成動(dòng)態(tài)二維碼的示例代碼
二維碼作為信息傳遞的重要載體,結(jié)合動(dòng)態(tài)圖像技術(shù)可以創(chuàng)造出極具創(chuàng)意的交互體驗(yàn)。本文用Python的MyQR庫生成動(dòng)態(tài)二維碼。
一、環(huán)境準(zhǔn)備
安裝MyQR庫。
pip install MyQR
或使用uv:
uv add MyQR
二、基礎(chǔ)用法
2.1 生成靜態(tài)二維碼
myqr.run(
words='https://github.com', # 目標(biāo)鏈接
save_name='basic_qr.png', # 輸出文件名
)
實(shí)際應(yīng)用舉例:
def get_simple_qrcode(words, save_name):
if save_name[-3:] in ["jpg", "png"]:
myqr.run(
words=words,
save_name=save_name
)
print("已生成簡單二維碼,存儲至%s" % save_name)
else:
raise AttributeError("二維碼不支持保存為%s格式" % save_name[-3:])
2.2 生成動(dòng)態(tài)二維碼
myqr.run(
words='Hello World!',
picture='input.gif', # 動(dòng)態(tài)背景圖
colorized=True, # 啟用彩色
save_name='animated_qr.gif', # 輸出動(dòng)態(tài)二維碼
version=6 # 復(fù)雜度等級(1-40)
)
三、參數(shù)詳解
| 參數(shù) | 類型 | 說明 | 示例值 |
|---|---|---|---|
| words | str | 二維碼內(nèi)容 | URL/TEXT |
| picture | str | 背景圖路徑 | 'bg.gif' |
| colorized | bool | 是否彩色 | True/False |
| contrast | float | 對比度(0-2) | 1.5 |
| brightness | float | 亮度(0-2) | 1.0 |
| save_dir | str | 保存路徑 | './output/' |
| version | int | 二維碼密度(1-40) | 6 |
四、高級技巧
4.1 顏色控制
myqr.run(
words='COLOR DEMO',
picture='bg.jpg',
colorized=True,
contrast=1.2,
brightness=0.8,
save_name='color_qr.gif'
)
4.2 動(dòng)態(tài)速度控制
通過調(diào)整GIF幀間隔時(shí)間,需要安裝Pillow
pip install pillow
或使用uv:
uv add pillow
# 需要手動(dòng)處理GIF時(shí)序
from PIL import Image
with Image.open('input.gif') as img:
img.save('adjusted.gif',
save_all=True,
duration=100, # 每幀時(shí)長(ms)
loop=0)
五、代碼示例
from MyQR import myqr
import os
def get_img_qrcode(words, save_name, picture, version=6, colorized=True):
if save_name[-3:] in ["jpg", "png", "gif"]:
if picture[-3:] in ["png", "jpg", "gif"]:
myqr.run(
words=words,
picture=picture,
colorized=colorized,
save_name=save_name,
version=version
)
print("已生成圖片二維碼,存儲至%s" % save_name)
else:
raise AttributeError("不支持的圖片格式\t%s" % picture[-3:])
else:
raise AttributeError("二維碼不支持保存為%s格式" % save_name[-3:])
if __name__ == '__main__':
url = "https://blog.csdn.net/Humbunklung"
if not os.path.isdir("img_qrcode"):
os.mkdir("img_qrcode")
for root, dirs, files in os.walk("logo"):
for file in files:
get_img_qrcode(
words=url,
save_name=f"img_qrcode/qrcode_{file}",
picture=os.path.join(root, file),
colorized=True
)
六、注意事項(xiàng)
- ?圖像尺寸建議:背景圖邊長至少為二維碼尺寸的1/4
- 顏色對比度:保證二維碼區(qū)域與背景有足夠?qū)Ρ?/li>
- 文件體積控制:動(dòng)態(tài)二維碼大小建議不超過5MB
- 兼容性測試:使用微信/支付寶等多平臺掃描驗(yàn)證
七、效果優(yōu)化方案
7.1 圖像預(yù)處理
使用OpenCV調(diào)整亮度和對比度
import cv2
img = cv2.imread('input.jpg')
adjusted = cv2.convertScaleAbs(img, alpha=1.2, beta=50)
7.2 批量生成工具
創(chuàng)建自動(dòng)化腳本
import os
contents = ['link1', 'link2', 'link3']
for idx, text in enumerate(contents):
myqr.run(
words=text,
picture=f'bg{idx%3}.gif',
save_name=f'qr_{idx}.gif'
)
八、擴(kuò)展應(yīng)用場景
- 活動(dòng)宣傳:將海報(bào)融入二維碼
- 電子名片:動(dòng)態(tài)展示聯(lián)系方式
- 產(chǎn)品包裝:增強(qiáng)用戶互動(dòng)體驗(yàn)
- 藝術(shù)創(chuàng)作:生成數(shù)字藝術(shù)作品
九、小結(jié)
通過MyQR庫,開發(fā)者可以在10行代碼內(nèi)實(shí)現(xiàn)專業(yè)級的動(dòng)態(tài)二維碼生成。結(jié)合具體業(yè)務(wù)需求,可以進(jìn)一步開發(fā)出:
- 帶數(shù)據(jù)埋點(diǎn)的營銷二維碼
- 動(dòng)態(tài)更新的信息展示系統(tǒng)
- 增強(qiáng)現(xiàn)實(shí)(AR)交互入口
以上就是Python使用MyQR生成動(dòng)態(tài)二維碼的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Python MyQR生成動(dòng)態(tài)二維碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python字典各式各樣操作從基礎(chǔ)到高級全面示例詳解
在Python中,字典(Dictionary)是一種強(qiáng)大而靈活的數(shù)據(jù)結(jié)構(gòu),它允許你存儲和檢索鍵值對,本文將深入探討Python中各式各樣的字典操作,包括基本操作、高級操作以及一些實(shí)用的技巧,通過全面的示例代碼,將展示如何充分發(fā)揮字典在Python編程中的優(yōu)勢2023-12-12
Python os模塊中的isfile()和isdir()函數(shù)均返回false問題解決方法
這篇文章主要介紹了Python os模塊中的isfile()和isdir()函數(shù)均返回false問題解決方法,返回false的原因是路徑使用了相對路徑,使用絕對路徑就可以解決這個(gè)問題,需要的朋友可以參考下2015-02-02
Python selenium模擬網(wǎng)頁點(diǎn)擊爬蟲交管12123違章數(shù)據(jù)
本次介紹怎么以模擬點(diǎn)擊方式進(jìn)入交管12123爬取車輛違章數(shù)據(jù),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
Python API 自動(dòng)化實(shí)戰(zhàn)詳解(純代碼)
今天小編就為大家分享一篇Python API 自動(dòng)化實(shí)戰(zhàn)詳解(純代碼),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python編程利用Numpy和PIL庫將圖片轉(zhuǎn)化為手繪
這篇文章主要介紹了Python編程利用Numpy和PIL庫將一張圖片轉(zhuǎn)化為手繪風(fēng)格,文中附含詳細(xì)實(shí)現(xiàn)的示例代碼,有需要的朋友可以借鑒參考下2021-09-09
Django ORM數(shù)據(jù)庫操作處理全面指南
本文深度探討Django ORM的概念、基礎(chǔ)使用、進(jìn)階操作以及詳細(xì)解析在實(shí)際使用中如何處理數(shù)據(jù)庫操作,同時(shí),我們還討論了模型深入理解,如何進(jìn)行CRUD操作,并且深化理解到數(shù)據(jù)庫遷移等高級主題2023-09-09
Python利用xmltodict實(shí)現(xiàn)字典和xml互相轉(zhuǎn)換的示例代碼
xmltodict是一個(gè)Python第三方庫,用于處理XML數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12

