博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端QRCode.js生成二维码(解决长字符串模块和报错问题)
阅读量:5157 次
发布时间:2019-06-13

本文共 1620 字,大约阅读时间需要 5 分钟。

QRCode

用法

1.使用npm安装到你的项目中 npm install qrcode2 --save

  1. 使用commonjs或者es6模块方式导入
var QRCode = require('qrcode2');// 或者import QRCode from 'qrcode2';

3 . 实例化QRCode对象

new QRCode(document.getElementById('qrcode'), 'http://www.baidu.com');//// 或者配置一些选项var qrcode = new QRCode(document.getElementById("qrcode"), {    text: "http://www.baidu.com",    width: 128,    height: 128,    colorDark : "#000",    colorLight : "#fff",    correctLevel : QRCode.CorrectLevel.H});

参数

参数 默认值 说明 备注
text string 二维码内容字符串 如果是url的话,为了微信和QQ可以识别,连接中的中文使用encodeURIComponent进行编码
width 256 图像宽度 单位像素(百分比不行)
height 256 图像高度 单位像素(百分比不行)
colorDark '#000' 二维码前景色 英文\十六进制\rgb\rgba\transparent都可以
colorLight ‘#fff’ 二维码背景色 英文\十六进制\rgb\rgba\transparent都可以
correctLevel QRCode.CorrectLevel.L 容错级别 由低到高 .L M Q H

方法

clear:清除QR code

makeCode(text: String):重新绘制QR code (仅在不支持 Canvas 的浏览器下有效)

常见bug1 长字符串显示模糊问题

  1. 问题原因:

    显示模糊的问题,是canvas的问题。由于字符串比较长,尤其是需要传一个连接地址,后面还加一些参数的时候,就会加大二维码的像素复杂度,而本身canvas在绘制的时候,就一直有像素模糊的问题,尤其是在手机上的时候

  2. 解决方法:

    先将生成的二维码进行倍数扩大,然后在css上面固定其显示宽高,这样就可以扩大显示像素精度。

js放大

var qrcode = new QRCode(document.getElementById("qrcode"), {    text: "http://www.baidu.com",    width: 128 * 5,  // 相应宽高扩大5倍    height: 128 * 5,    colorDark : "#000",    colorLight : "#fff",    correctLevel : QRCode.CorrectLevel.H});

css固定宽高

可以给canvas 和 img 固定为 128* 128的大小
也可以在包裹#qrcode 的容器上固定128* 128的大小 里面内容100%
比如

.qrcode-out {width: 128px;height: 128px;}canvas,img {width:100%;height: 100%;}

常见bug2 因为url太长,导致二维码加载报错

一般报错提醒 Error: code length overflow. (1756>1056)

807156-20190430193225113-2018604597.jpg

一般都是容错率设置为最高导致的,此时把容错率调低一级便可以

correctLevel : QRCode.CorrectLevel.Q

转载于:https://www.cnblogs.com/whkl-m/p/10797776.html

你可能感兴趣的文章
【Codeforces Round #445 (Div. 2) D】Restoration of string
查看>>
【51.27%】【codeforces 604A】Uncowed Forces
查看>>
RDLC报表开发分组笔记
查看>>
二丶CSS
查看>>
《avascript 高级程序设计(第三版)》 ---第二章 在HTML中使用Javascript
查看>>
Hibernate主键生成策略
查看>>
Crushing Machinery - Strong Support of Cement Enterprise
查看>>
AsyncTask
查看>>
Django框架(十九)—— drf:序列化组件(serializer)
查看>>
JS一些概念知识及参考链接
查看>>
关于JS中&&和||用法技巧
查看>>
suoi14 子树查找 (dfs)
查看>>
密闭类、密闭方法
查看>>
创建线程有几种不同的方式
查看>>
大话重构连载9:大布局你伤不起
查看>>
nginx处理跨域
查看>>
kubectl相关指令
查看>>
Kubernetes基石-pod容器
查看>>
Kubernetes组件-CronJob(定时任务)
查看>>
.Net Core 3.0原生Json解析器
查看>>