不能识别原因如下:
1、二维码图片直接放在background里时无法识别
由上述二维码识别原理我们可以知道客户端是检测网页的img标签内进行长按操作时,会立刻截屏并且启动二维码识别算法。所以当将二维码图片直接放在background中时,识别效果特别差,基本上是识别不出来的。所以最好是将二维码图片单独切出来放在了img标签中。
2、多张二维码图片无法在同一屏幕中共享
微信识别二维码的原理是长按的时候相当于将当前手机屏幕截屏,识别截屏后的图片,这样一张图片有两个二维码图的时候当然只会识别出一个。建议解决办法是不要在同一屏幕中放多张图片或者提示用户双击放大二维码进行二维码识别。
3、多次执行长按二维码的功能会导致内存泄漏,手机会变卡
多次执行长按二维码的功能会导致手机(iPhone)变卡。长按识别二维码,多次测试后右键识别出来是二维码图片(即没有出现“识别二维码”的按钮)。
4、iOS 版微信长按识别二维码无法正常识别
(8.21 更新:最新版6.2.4 已经修复该bug)
以下实测在iOS 版(iPhone)微信6.2.2 中有此bug,安卓版微信暂时没有发现有此bug。
对于二维码区域,实际可识别区域是整体上移64px,64px的偏移与二维码大小本身无关。下面的红色的区域即为实际可识别的二维码区域。
为什么是神秘的64px?因为64px正好是微信内置浏览器标题栏+系统标题栏的高度。
可以认为微信客户端在识别二维码的时候忽略了微信标题栏+系统状态栏的高度。