Qraft

二维码扫不出来时的原因与解决办法

摄像头的距离和角度没对上

最常见的原因,是摄像头离二维码太近或者太远。要调到二维码整体落在取景框里、同时又占足够大的画面的那个距离(大致 10〜20cm,也就是二维码边长的约 10 倍)。扫不出来的问题,多半最后都落到尺寸不够、对比度不够、静区不够这三件事上,先按顺序把这三点核一遍最省事。

从很斜的角度去扫,二维码会变形而认不出来。基本要求是正对着码把摄像头端平。如果是手抖造成的,双手握住手机、把肘部靠在桌面或身体上,画面就稳得多。

光线不够,或者有反光

光线暗的地方,二维码的对比度(建议 4:1 以上)达不到,读取就会失败。开灯、走到窗边、打开手机的闪光灯,这些办法都有效。手机的自动曝光在昏暗处会拉长曝光时间,画面容易糊,光线充足本身就能减少一半的失败。

反过来,印在有光泽的材料上的二维码,会被灯光反射照出一片白。换个角度躲开反光,或者用手挡出一片阴影把反光压住。

二维码脏了或者破了

二维码表面有污渍、划痕、褶皱,读取就会失败。先试着把脏东西擦掉、把褶皱抚平。收据或者传单折过一道,折痕正好压在码上的情况尤其多。

二维码本身带纠错功能,轻微的破损照样读得出来。但如果定位图案(三个角上的大方块)坏掉了,就无法完成位置检测,读取会变得非常困难。

问题出在二维码自己身上

有时候毛病是在做码的时候就带进去的。

  • 对比度不够:浅色的模块配上亮色背景,很难读
  • 留白(静区)不够:二维码周围没有一圈白边,就认不出来
  • 尺寸太小:相对于装进去的数据量,印出来的尺寸太小,模块就会糊在一起读不出来
  • 链接失效:码本身扫得出来,但链接指向的页面已经被删掉了

要扫的码显示在屏幕上时

要扫的不是纸,而是显示在另一块屏幕上的二维码,这样的场合也越来越多。这时候如果显示那一侧的屏幕太小,或者亮度调得太低,就可能扫不顺。把显示设备的屏幕亮度调高、让码以足够大的尺寸显示出来,是好不好扫的关键。另外,屏幕保护膜上的划痕和污渍、强烈的反光也会碍事。不只是扫的一方,把显示的一方状态也理好,成功率就会有明显的不同。

自带相机和专用应用的差别

大多数手机只要把自带相机对上去就能读二维码。不过视机型和设置而定,这个功能可能被关掉了,也可能干脆不支持。自带相机没反应的时候,先去确认一下设置,或者换一个支持扫二维码的应用,往往就解决了。此外还有一些特殊格式的码,不用专门的应用就处理不好。一种办法不行,换一种手段就扫出来的情况并不少见。

各种办法都试过还是扫不出来

该试的都试遍了还是读不出来,就要考虑码本身有问题的可能。如果码的下面或旁边用文字附了链接,手动敲进去一样能到目的页面。要是知道这个码是谁发的,直接去问一份正确的码也很有效。如果是自己做的码读不出来,那就从减少数据量、调整纠错等级、留出足够的白边重新做一遍这几个方向复查,常常就能改善。把原因一个一个切开来看,是最快通向确切解决的路。

手机那一侧的问题

如果毛病出在手机这一侧,可以这样处理。

  • 摄像头镜头脏了:用软布把镜头擦干净
  • 扫码功能没开:iPhone 请确认「设置」→「相机」→「扫描二维码」是否已打开
  • 应用出故障:重启相机应用,或者换一个二维码读取应用试试
  • 系统太旧:旧版系统可能根本没有内置扫二维码的功能。升级系统,或者装一个专用应用

如果这样还是读不出来,手动输入二维码下方标注的链接就是最后的手段。

说到底,读取上的麻烦绝大部分都能归到三件事上:尺寸不够、对比度不够、静区不够。