You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何制作圆形二维码?咨询qrcodechimp.com圆形二维码设计实现方式

制作圆形二维码的方法与实现思路

一、核心原理

圆形二维码并非重构二维码底层结构,而是在保留扫码识别核心元素的基础上做视觉改造:

  • 必须完整保留三个定位角(二维码三个角落的方形标记)、定时图案(定位角之间的黑白交替模块)——这是扫码器快速定位的关键
  • 将普通二维码的方形数据模块替换为圆形,或通过圆形蒙版裁剪掉方形边缘,只保留圆形区域内的有效模块

二、qrcodechimp.com的设计逻辑推测

该平台的圆形二维码实现逻辑大致分为三步:

  • 核心识别区保留:三个定位角仅做轻微圆角处理(或完全保留方形),确保黑白对比度和轮廓清晰,不干扰扫码定位
  • 数据模块圆形化:将非定位区的方形数据点批量替换为圆形,同时调整模块间距,保证数据密度符合对应二维码版本的要求
  • 圆形蒙版裁剪:用圆形蒙版覆盖生成的二维码,裁切掉圆形外的冗余区域,最终呈现完整的圆形视觉效果
  • 可选美化:支持添加圆形边框、渐变填充等,但所有修改都以不破坏识别核心为前提

三、自行实现方案

3.1 设计工具实现(非开发人员友好)

  • 第一步:用任意标准二维码生成器生成目标二维码,建议选择高容错等级(允许最多30%模块修改)
  • 第二步:将二维码导入Photoshop、Figma或Canva等设计工具
  • 第三步:添加圆形蒙版,裁剪出圆形区域;选中所有非定位角的方形模块,替换为圆形形状(或用圆角滤镜将方形转为圆形)
  • 第四步:检查定位角的清晰度,用手机扫码测试识别成功率,调整模块大小或对比度直到稳定识别

3.2 代码实现(开发人员方案,Python示例)

以下代码结合qrcode和PIL库实现圆形二维码:

  1. 生成标准高容错二维码
import qrcode
from PIL import Image, ImageDraw

# 初始化二维码参数,使用H级容错(最高容错)
qr = qrcode.QRCode(
    version=3,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=12,
    border=4,
)
qr.add_data("你的内容/链接")
qr.make(fit=True)
# 生成基础二维码图片
base_img = qr.make_image(fill_color="black", back_color="white").convert('RGB')
width, height = base_img.size
box_size = 12  # 与生成时的box_size保持一致
  1. 将方形数据模块转为圆形
draw = ImageDraw.Draw(base_img)

# 遍历所有模块,跳过三个定位角区域
for x in range(0, width, box_size):
    for y in range(0, height, box_size):
        # 定位角区域判断:每个定位角为7x7的模块
        is_positioner = (x < 7*box_size and y < 7*box_size) or \
                        (x < 7*box_size and y > height - 7*box_size) or \
                        (x > width - 7*box_size and y < 7*box_size)
        if is_positioner:
            continue
        
        # 检查当前模块是否为黑色数据点
        center_pixel = base_img.getpixel((x + box_size//2, y + box_size//2))
        if center_pixel == (0, 0, 0):
            # 绘制圆形替换方形
            draw.ellipse([x, y, x+box_size, y+box_size], fill="black")
        else:
            # 清除方形,保留白色背景
            draw.rectangle([x, y, x+box_size, y+box_size], fill="white")
  1. 添加圆形蒙版裁剪
# 创建圆形透明度蒙版
mask = Image.new('L', (width, height), 0)
mask_draw = ImageDraw.Draw(mask)
mask_draw.ellipse([0, 0, width, height], fill=255)

# 应用蒙版,得到圆形二维码
base_img.putalpha(mask)
base_img.save("circular_qr.png")

四、关键注意事项

  • 定位角不可过度修改:即使做美化,也要保留其黑白对比和基本方形轮廓,否则扫码器无法定位
  • 优先选择高容错等级:H级容错允许最多30%的模块被修改,是圆形二维码的最佳选择
  • 多平台测试:不同扫码软件的识别能力有差异,需在微信、支付宝、浏览器等工具中测试识别成功率
  • 控制模块大小:圆形模块的直径建议与原方形模块的边长一致,避免数据密度失衡影响识别

内容的提问来源于stack exchange,提问作者Niki Francesca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:01:07