Python使用MyQR生成动态二维码
二维码作为信息传递的重要载体,结合动态图像技术可以创造出极具创意的交互体验。本文用Python的MyQR
库生成动态二维码。
一、环境准备
安装MyQR库。
pip install MyQR
或使用uv
:
uv add MyQR
二、基础用法
2.1 生成静态二维码
myqr.run(
words='https://github.com', # 目标链接
save_name='basic_qr.png', # 输出文件名
)
实际应用举例:
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:])
生成动态二维码
myqr.run(
words='Hello World!',
picture='input.gif', # 动态背景图
colorized=True, # 启用彩色
save_name='animated_qr.gif', # 输出动态二维码
version=6 # 复杂度等级(1-40)
)
三、参数详解
参数 | 类型 | 说明 | 示例值 |
---|---|---|---|
words | str | 二维码内容 | 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 动态速度控制
通过调整GIF帧间隔时间,需要安装Pillow
pip install pillow
或使用uv
:
uv add pillow
# 需要手动处理GIF时序
from PIL import Image
with Image.open('input.gif') as img:
img.save('adjusted.gif',
save_all=True,
duration=100, # 每帧时长(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
)
运行效果举例:
- 静态二维码
- 动态二维码
六、注意事项
- 图像尺寸建议:背景图边长至少为二维码尺寸的1/4
- 颜色对比度:保证二维码区域与背景有足够对比
- 文件体积控制:动态二维码大小建议不超过5MB
- 兼容性测试:使用微信/支付宝等多平台扫描验证
七、效果优化方案
7.1 图像预处理
使用OpenCV调整亮度和对比度
import cv2
img = cv2.imread('input.jpg')
adjusted = cv2.convertScaleAbs(img, alpha=1.2, beta=50)
7.2 批量生成工具
创建自动化脚本
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'
)
八、扩展应用场景
- 活动宣传:将海报融入二维码
- 电子名片:动态展示联系方式
- 产品包装:增强用户互动体验
- 艺术创作:生成数字艺术作品
九、小结
通过MyQR库,开发者可以在10行代码内实现专业级的动态二维码生成。结合具体业务需求,可以进一步开发出:
- 带数据埋点的营销二维码
- 动态更新的信息展示系统
- 增强现实(AR)交互入口
参考
MyQR官方文档