二维码扫不出来的排查:尺寸、安静区、对比度和容错等级

· 约 3 分钟 二维码生成

二维码失效的原因可以分成两大类:生成时的问题(尺寸、容错、颜色)和使用时的问题(打印质量、安静区、反光)。排查时按这两类逐步检查,通常能快速定位。

快速排查清单

1. 三个角的定位方块(回字形)完整且清晰?
2. 码模块和背景颜色对比度是否足够?
3. 四周是否有足够的空白安静区?
4. 打印尺寸是否大于 2.5 cm × 2.5 cm?
5. 如果有 logo,是否使用了 H 级容错?
6. 用微信 / 支付宝 / 系统相机分别测试——哪个能扫?

原因 1:安静区不足

安静区(Quiet Zone)是二维码四周必须保留的空白区域,最小宽度为 4 个模块单元——即构成二维码最小格子的尺寸。

错误(安静区为 0):
┌────────────────────┐
│ 文字二维码文字文字 │
└────────────────────┘

正确(四周留白):
┌──────────────────────────────┐
│                              │
│   ┌──────────────────┐       │
│   │    二 维 码       │       │
│   └──────────────────┘       │
│                              │
└──────────────────────────────┘

安静区不足的典型场景:

  • 二维码直接贴在图片边缘或文字旁边
  • 多个二维码紧密排列
  • 有装饰性外框但紧贴码模块边界

修复:在生成工具里设置边距(margin),通常 10–20 px;打印时保证二维码周围有 3–5 mm 空白。

原因 2:尺寸太小

使用场景最小尺寸建议
手机近距离扫(30 cm 以内)2 cm × 2 cm
桌面展示、名片3 cm × 3 cm
海报展示(1 m 距离)8 cm × 8 cm
户外广告(3 m 距离)30 cm × 30 cm

数据量影响尺寸:二维码存的信息越多,版本越高,模块越密。同样物理尺寸下,信息越多越难扫。

优化方向:

  • 用短链接代替原始 URL(从 100 字符压缩到 20 字符)
  • 避免在二维码里直接存储大段文字

原因 3:对比度问题

扫码器通过深浅对比识别码模块,对比度低于阈值时识别失败。

安全的颜色搭配

码模块颜色背景颜色是否安全
黑色白色✅ 最安全
深蓝 / 深绿 / 深红白色 / 浅色✅ 安全
黑色浅黄 / 浅绿✅ 安全
浅灰白色❌ 对比度不足
彩色渐变白色❌ 部分区域失效
深色深色❌ 无法识别

反色二维码(白码黑底):大多数现代扫码器支持,但兼容性不如正色,建议测试后再用。

原因 4:logo 遮挡超出容错上限

带 logo 的二维码依赖容错机制修复被遮挡的数据:

容错等级可恢复损坏比例推荐场景
L7%环境干净、不加 logo
M15%通用场景
Q25%有轻度干扰
H30%加 logo、或有覆盖物

加 logo 时必须用 H 级容错,且 logo 面积不超过二维码面积的 25%。

不能遮挡的区域:三个角的定位方块(回字形图案)——这是扫码器找到二维码方向的关键,遮挡后无法识别。

原因 5:打印质量问题

打印引起的失效排查:

打印后扫不出 → 检查实际尺寸(小于 2.5 cm 先放大)
           → 肉眼看模块边缘是否清晰(模糊则换纸或提高 DPI)
           → 检查深色模块是否"扩张"粘连(换纸、降低墨水浓度)
           → 换白色背景纸张(彩色纸降低对比度)

生成时注意:

  • 提供 SVG 矢量图(任意尺寸打印无损)或至少 300 DPI 的 PNG(不要直接从屏幕截图缩放打印)
  • 打印前在软件里预览一下模块是否清晰可辨

配套工具

❓ 常见问题

二维码放了 logo 还能扫吗?

能,但 logo 面积不能超过二维码面积的约 30%,且必须使用 H 级容错。二维码有四个容错等级(L/M/Q/H),H 级允许最多 30% 的数据块损坏仍可识别——logo 覆盖的区域相当于"损坏"了这部分数据,容错机制自动修复。低容错等级(L/M)放 logo 后极易失效。安全规则:logo 面积不超过二维码面积的 25%;logo 四周保留几个模块的白边,不要遮住三个角落的定位方块(回字形);生成后用微信、支付宝、系统相机分别测试,三个都能扫才放心大批量使用。

二维码颜色改了为什么扫不出?

前景色(码模块)和背景色对比度不足是最常见原因。常见错误:(1) 把码模块改成浅色(浅灰、浅蓝、浅黄)——对比度不足,扫码器无法区分模块边界;(2) 背景深色 + 码模块也深色(如深蓝底黑码)——同样无法识别;(3) 彩色渐变填充码模块——部分区域对比度低于阈值。安全改法:保持黑色码模块,只改背景颜色(白→浅黄/浅绿/浅灰);或保持白色背景,改码模块颜色(黑→深蓝/深绿/深红)。避免把码模块改成任何浅色系。

打印的二维码扫不出来,屏幕显示的却能扫?

打印引起的失效通常有三个原因:分辨率不足、渗墨出血、尺寸太小。(1) 打印分辨率:二维码图片文件需要 300 DPI 以上,低 DPI 打印后码模块边缘模糊;(2) 渗墨:低质量纸张或墨水渗透,深色模块"扩张"侵入白色区域,导致识别错误;(3) 尺寸太小:实际打印尺寸小于 2 cm × 2 cm,手机摄像头对焦困难。修复方法:提供 300 DPI 以上的高分辨率图或 SVG 矢量图;打印后用尺子量实际尺寸;用多台设备测试。

安静区是什么,缺少了会怎样?

安静区是二维码四周必须保留的空白边框,最小宽度为 4 个模块单元(最小格子的尺寸)。安静区的作用是告诉扫码器"这里是二维码的边界",缺少安静区会导致扫码器找不到码的范围,识别失败率大幅上升。常见问题:把二维码紧贴图片边缘或文字,没有留白;多个二维码紧靠排列,安静区互相侵入;二维码外有装饰边框但边框紧贴码模块,没有空白间距。修复:在二维码外侧保留至少 4 个模块宽度的空白(通常 3–5 mm)。

同一个二维码有时能扫有时不能扫,是什么原因?

"时好时坏"通常是光线或对焦问题,不是二维码本身的问题。常见原因:(1) 屏幕反光:强光或特定角度下屏幕反光覆盖码模块,换角度或遮光就能扫;(2) 手持抖动:扫码时手不稳,相机来不及对焦,靠稳或保持距离扫;(3) 二维码太小 + 复杂背景:相机焦点落在背景,点触屏幕二维码位置手动对焦;(4) 扫码软件差异:不同 App 识别能力不同,微信和支付宝识别能力强于很多第三方 App。测试方法:用微信、支付宝、手机系统相机分别扫,三个都能扫说明二维码本身没问题。

打开 二维码生成 文本/网址/WiFi/名片 · Logo/渐变/码点样式 · PNG/SVG

📖 同一工具的其他教程