QRCode

qrcode 库可以轻松生成二维码图片,支持自定义颜色、大小和样式。

安装

pip install qrcode pillow

生成基本二维码

import qrcode

# 创建二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)

# 添加数据
qr.add_data('https://www.example.com')
qr.make(fit=True)

# 生成图片
img = qr.make_image(fill_color="black", back_color="white")

# 保存图片
img.save('qrcode.png')
print("二维码已保存为 qrcode.png")

自定义二维码样式

import qrcode

# 创建二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4,
)

qr.add_data('Hello, QRCode!')
qr.make(fit=True)

# 自定义颜色
img = qr.make_image(fill_color="blue", back_color="yellow")

# 保存
img.save('custom_qrcode.png')

生成带 Logo 的二维码

import qrcode
from PIL import Image

# 生成二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4,
)

qr.add_data('https://www.example.com')
qr.make(fit=True)

# 创建二维码图片
img = qr.make_image(fill_color="black", back_color="white").convert('RGB')

# 打开 Logo
logo = Image.open('logo.png')

# 计算 Logo 大小(为二维码的 1/5)
box_size = img.size[0] // len(qr.modules)
logo_size = box_size * len(qr.modules) // 5

# 调整 Logo 大小
logo = logo.resize((logo_size, logo_size), Image.Resampling.LANCZOS)

# 计算 Logo 位置
pos = ((img.size[0] - logo_size) // 2, (img.size[1] - logo_size) // 2)

# 粘贴 Logo
img.paste(logo, pos)

# 保存
img.save('qrcode_with_logo.png')

批量生成二维码

import qrcode
import os

# 数据列表
data_list = [
    ('https://www.example.com', 'example_qr.png'),
    ('https://www.google.com', 'google_qr.png'),
    ('https://www.github.com', 'github_qr.png'),
]

# 批量生成
for data, filename in data_list:
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )

    qr.add_data(data)
    qr.make(fit=True)

    img = qr.make_image(fill_color="black", back_color="white")
    img.save(filename)
    print(f"已生成: {filename}")

生成彩色二维码

import qrcode
from PIL import Image

# 生成二维码
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4,
)

qr.add_data('彩色二维码')
qr.make(fit=True)

# 创建二维码图片
img = qr.make_image(fill_color="black", back_color="white").convert('RGB')

# 获取像素数据
pixels = img.load()

# 自定义颜色(渐变效果)
for y in range(img.size[1]):
    for x in range(img.size[0]):
        if pixels[x, y] == (0, 0, 0):  # 黑色像素
            # 创建渐变色
            r = int(255 * x / img.size[0])
            g = int(255 * y / img.size[1])
            b = 200
            pixels[x, y] = (r, g, b)

# 保存
img.save('gradient_qrcode.png')

错误纠正级别

import qrcode

# ERROR_CORRECT_L: 约 7% 的错误可纠正
# ERROR_CORRECT_M: 约 15% 的错误可纠正
# ERROR_CORRECT_Q: 约 25% 的错误可纠正
# ERROR_CORRECT_H: 约 30% 的错误可纠正

qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,  # 最高级别
    box_size=10,
    border=4,
)

qr.add_data('高容错二维码')
qr.make(fit=True)

img = qr.make_image(fill_color="black", back_color="white")
img.save('high_error_correction_qr.png')

读取二维码

from PIL import Image
import cv2

# 方法1: 使用 OpenCV
img = cv2.imread('qrcode.png')
detector = cv2.QRCodeDetector()
data, bbox, _ = detector.detectAndDecode(img)
print(f"二维码内容: {data}")

# 方法2: 使用 pyzbar
# pip install pyzbar
from pyzbar.pyzbar import decode

img = Image.open('qrcode.png')
result = decode(img)
for obj in result:
    print(f"二维码内容: {obj.data.decode('utf-8')}")
💡 提示:二维码的错误纠正级别越高,可以容纳的数据越少,但抗损坏能力越强。

学习资源

📚 官方文档

Python 官方文档是最权威的学习资源

访问文档

🎓 在线教程

适合初学者的互动式学习平台

廖雪峰教程

💻 练习平台

通过实际编码练习提升技能

力扣

📖 推荐书籍

深入理解 Python 编程思想

Python编程:从入门到实践

🚀 下一步学习

  1. ✓ 熟悉基础语法和数据类型
  2. ✓ 掌握控制流和函数
  3. ✓ 理解面向对象编程思想
  4. ✓ 学会文件操作和目录管理
  5. ✓ 掌握异常处理机制
  6. ✓ 熟悉 Python 高级特性
  7. ✓ 掌握字符串格式化技巧
  8. ✓ 了解 Socket 网络编程
  9. ✓ 掌握异步编程(asyncio)
  10. ✓ 掌握 Requests 进行网络请求
  11. ✓ 掌握 aiohttp 异步 HTTP 客户端
  12. ✓ 熟悉 BeautifulSoup 解析 HTML
  13. ✓ 了解 Selenium 浏览器自动化
  14. ✓ 掌握 Playwright 现代浏览器自动化
  15. ✓ 精通 Scrapy 爬虫框架
  16. ✓ 学会正则表达式处理文本
  17. ✓ 精通 NumPy 数值计算
  18. ✓ 熟练使用 Pandas 数据分析
  19. ✓ 掌握 FastAPI 构建 RESTful API
  20. ✓ 精通 SQLAlchemy ORM 框架
  21. ✓ 掌握 MySQL 关系型数据库
  22. ✓ 熟悉 MongoDB 文档数据库
  23. ✓ 了解 Redis 缓存数据库
  24. 学习机器学习(Scikit-learn、PyTorch)
  25. 完成实际项目练习