首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python 自动化生成二维码

Python 自动化生成二维码

作者头像
用户11081884
发布2026-07-20 17:15:26
发布2026-07-20 17:15:26
510
举报

二维码已成为现代生活中不可或缺的一部分,从支付到信息分享,无处不在。本文将介绍如何使用Python轻松生成各种风格的二维码,包括基础二维码和带有自定义背景的高级二维码,附上代码,可以直接应用。

准备工作

首先安装必要的库:

代码语言:javascript
复制
pip install qrcode[pil] pillow

基础二维码生成

代码语言:javascript
复制
import qrcode

def generate_basic_qrcode(data, filename='basic_qrcode.png', 
                         fill_color='black', back_color='white'):
    """
    生成基础二维码
    
    参数:
        data: 要编码的内容
        filename: 保存的文件名
        fill_color: 二维码颜色
        back_color: 背景颜色
    """
    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=fill_color, back_color=back_color)
    img.save(filename)
    print(f"二维码已生成并保存为 {filename}")


# 使用示例
generate_basic_qrcode(" https://www.example.com ", "example_qrcode.png")
代码语言:javascript
复制
代码执行结果及扫码后效果如下:

这段代码会生成一个标准的黑白二维码,你可以通过修改 fill_color back_color 参数来改变颜色。

高级二维码:自定义样式

代码语言:javascript
复制
import qrcode
from PIL import Image, ImageDraw

def generate_styled_qrcode(data, filename='styled_qrcode.png', 
                          fill_color='#3498db', back_color='#f1c40f',
                          logo_path=None):
    """
    生成带样式的二维码,可选添加中心logo
    
    参数:
        data: 要编码的内容
        filename: 保存的文件名
        fill_color: 二维码颜色(十六进制)
        back_color: 背景颜色(十六进制)
        logo_path: 中心logo图片路径(可选)
    """
    qr = qrcode.QRCode(
        version=2,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=8,
        border=2,
    )
    qr.add_data(data)
    qr.make(fit=True)
    
    img = qr.make_image(fill_color=fill_color, back_color=back_color)
    img = img.convert('RGBA')
    
    if logo_path:
        logo = Image.open(logo_path)
        logo_size = min(img.size) // 4
        logo = logo.resize((logo_size, logo_size), Image.LANCZOS)
        
        pos = ((img.size[0] - logo.size[0]) // 2, 
               (img.size[1] - logo.size[1]) // 2)
        
        img.paste(logo, pos, logo)
    
    img.save(filename)
    print(f"样式化二维码已生成并保存为 {filename}")

# 使用示例
generate_styled_qrcode(" https://www.example.com ", 
                      "styled_qrcode.png",
                      fill_color='#e74c3c',
                      back_color='#ecf0f1',
                      logo_path='logo.png')
代码语言:javascript
复制
代码执行结果及扫码后的效果如下:

带背景图片的二维码

代码语言:javascript
复制
import qrcode
from PIL import Image, ImageOps

def generate_bg_qrcode(data, bg_path, output_path='bg_qrcode.png', 
                       qr_color=(0, 0, 0), opacity=0.8):
    """
    生成带背景图片的二维码
    
    参数:
        data: 要编码的内容
        bg_path: 背景图片路径
        output_path: 输出文件路径
        qr_color: 二维码颜色(RGB元组)
        opacity: 二维码不透明度(0-1)
    """
    # 生成基础二维码
    qr = qrcode.QRCode(
        version=3,
        error_correction=qrcode.constants.ERROR_CORRECT_H,
        box_size=10,
        border=2,
    )
    qr.add_data(data)
    qr.make(fit=True)
    
    qr_img = qr.make_image(fill_color="black", back_color="white")
    qr_img = qr_img.convert("RGBA")
    
    # 处理背景图片
    bg = Image.open(bg_path)
    bg = ImageOps.fit(bg, qr_img.size, method=Image.LANCZOS)
    
    # 创建二维码遮罩
    mask = qr_img.convert("L").point(lambda x: 255 if x < 128 else 0)
    
    # 合成图像
    colored_qr = Image.new("RGB", qr_img.size, qr_color)
    final = Image.composite(colored_qr, bg, mask)
    
    # 调整二维码不透明度
    if opacity < 1:
        alpha = qr_img.split()[3]
        alpha = alpha.point(lambda x: int(x * opacity))
        qr_img.putalpha(alpha)
        final = Image.alpha_composite(bg.convert("RGBA"), qr_img)
    
    final.save(output_path)
    print(f"带背景的二维码已生成并保存为 {output_path}")


# 使用示例
generate_bg_qrcode(" https://www.example.com ", 
                  "background.jpg", 
                  "final_qrcode.png",
                  qr_color=(255, 0, 0), 
                  opacity=0.7)

参数说明

1、version: 控制二维码的大小(1-40),数字越大二维码越大;

2、error_correction: 纠错级别,有四个选项:

  • ERROR_CORRECT_L: 约7%的错误可被纠正;
  • ERROR_CORRECT_M: 约15%的错误可被纠正(默认);
  • ERROR_CORRECT_Q: 约25%的错误可被纠正;
  • ERROR_CORRECT_H: 约30%的错误可被纠正;

3、box_size: 每个“小方块”的像素数;

4、border: 二维码边缘的空白区域大小;

代码运行结果及扫码效果:

通过Pythonqrcode库可以轻松生成各种风格的二维码。从简单的黑白二维码到带有自定义背景和logo的高级二维码,Python提供了强大的工具来实现这些功能。根据实际的需求调整参数,创造出独一无二的二维码设计。

“无他,惟手熟尔”!有需要就用起来。

如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 基础二维码生成
  • 高级二维码:自定义样式
  • 带背景图片的二维码
  • 参数说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档