插件:qrcode的使用

源文档: qrcode文档

安装

javascript 复制代码
npm install --save qrcode

TypeScript用户:如果您使用@types/qrcode,则需要在数据段上方添加//@ts ignore,因为它需要data:string。

用法

javascript 复制代码
用法:qrcode〔options〕<input string>

二维码选项:
-v、 --qversion二维码符号版本(1-40)[编号]
-e、 --error纠错级别[选项:"L"、"M"、"Q"、"H"]
-m、 --掩码掩码模式(0-7)[数字]

渲染器选项:
-t、 --type输出类型[选项:"png"、"svg"、"utf8"]
-w、 --width图像宽度(px)[数字]
-s、 --比例比例因子[数字]
-q、 --qzone安静区域大小[number]
-l、 --lightcolor Light RGBA十六进制颜色
-d、 --深色深色RGBA十六进制颜色
--small将较小的二维码输出到终端[布尔值]

选项:
-o、 --输出输出文件
-h、 --help显示帮助[boolean]
--version显示版本号[布尔值]

示例:
qrcode"some text"在终端窗口中绘制
qrcode-o out.png"some text"另存为png图像
qrcode-d F00-o out.png"some text"使用红色作为前景色

如果未指定,则根据文件扩展名推测输出类型。可识别的扩展名有png、svg和txt。

API

浏览器端api

1.create() 创建二维码符号并返回一个二维码对象。

create(text, [options])

text: 要编码的文本或描述分段的对象列表。

options:

1.1 returns : object类型

javascript 复制代码
// QRCode object
{
  modules,              // 具有模块数据的位矩阵类
  version,              // 二维码版本
  errorCorrectionLevel, // 纠错级别
  maskPattern,          // 计算的遮罩图案
  segments              // 生成的分段
}

2.toCanvas() 在画布上绘制二维码符号。

toCanvas(canvasElement,text,options,cb(error))和 toCanvas(text, [options], [cb(error, canvas)]) ,如果省略了canvasElement,则返回一个新的画布。

2.1canvasElement: 画布绘制二维码绑定的dom元素。

2.2text: 要编码的文本或描述分段的对象列表。

2.3options:

2.3.1 cb:绘制完成时调用的回调函数

javascript 复制代码
QRCode.toCanvas('text', { errorCorrectionLevel: 'H' }, function (err, canvas) {
  if (err) throw err

  var container = document.getElementById('container')
  container.appendChild(canvas)
})

节点qrcode可以通过Browserify和Webpack等模块捆绑器在浏览器中使用,也可以通过将预编译的捆绑包包含在构建/文件夹中来使用。

html 复制代码
<!-- index.html -->
<html>
  <body>
    <canvas id="canvas"></canvas>
    <script src="bundle.js"></script>
  </body>
</html>
javascript 复制代码
// index.js -> bundle.js
const QRCode = require('qrcode')
const canvas = document.getElementById('canvas')

QRCode.toCanvas(canvas, 'sample text', function (error) {
  if (error) console.error(error)
  console.log('success!');
})

ES6/ES7中使用(Promises和Async/Await可以用来代替回调函数)

javascript 复制代码
import QRCode from 'qrcode'

// With promises
QRCode.toDataURL('I am a pony!')
  .then(url => {
    console.log(url)
  })
  .catch(err => {
    console.error(err)
  })

// With async/await
const generateQR = async text => {
  try {
    console.log(await QRCode.toDataURL(text))
  } catch (err) {
    console.error(err)
  }
}

二进制数据

QR码可以保存基于任意字节的二进制数据。如果您试图通过首先将数据转换为JavaScript字符串来创建二进制QR码,它将无法正确编码,因为字符串编码会添加额外的字节。相反,您必须传递一个Uint8ClampedArray或兼容的数组,或一个Node Buffer,如下所示:

javascript 复制代码
// Regular array example
// WARNING: Element values will be clamped to 0-255 even if your data contains higher values.
const QRCode = require('qrcode')
QRCode.toFile(
  'foo.png',
  [{ data: [253,254,255], mode: 'byte' }],
  ...options...,
  ...callback...
)
javascript 复制代码
// Uint8ClampedArray example
const QRCode = require('qrcode')

QRCode.toFile(
  'foo.png',
  [{ data: new Uint8ClampedArray([253,254,255]), mode: 'byte' }],
  ...options...,
  ...callback...
)
javascript 复制代码
// Node Buffer example
// WARNING: Element values will be clamped to 0-255 even if your data contains higher values.
const QRCode = require('qrcode')

QRCode.toFile(
  'foo.png',
  [{ data: Buffer.from([253,254,255]), mode: 'byte' }],
  ...options...,
  ...callback...
)

3.toDataURL() 返回包含二维码图像表示形式的数据URI。如果提供,canvasElement将被用作画布来生成数据URI。

toDataURL(文本,选项,cb(错误,url))和 toDataURL(canvasElement,text,options,cb(error,url))。

3.1 canvasElement: 画布绘制二维码绑定的dom元素。

3.2 text: 要编码的文本或描述分段的对象列表。

3.3 options:

3.3.1 type

类型: String

可能的值有:images/png、images/jpeg、images/web。

3.3.2 rendererOpts.quality:

类型: Number

一个介于0和1之间的数字,如果请求的类型是image/jpeg或image/web,则表示图像质量。

3.3.3 cb 绘制完成时调用的回调函数

javascript 复制代码
const opts = {
  errorCorrectionLevel: 'H',
  type: 'image/jpeg',
  quality: 0.3,
  margin: 1,
  color: {
    dark:"#010599FF",
    light:"#FFBF60FF"
  }
}

QRCode.toDataURL('text', opts, function (err, url) {
  if (err) throw err

  var img = document.getElementById('image')
  img.src = url
})

4.toString()

toString(text,options,cb(error,string))返回QR代码的字符串表示形式。

4.1 text: 要编码的文本或描述分段的对象列表。

4.2 options:

4.2.1 type

类型: String

可能的值有:terminal、utf8和svg。

4.2.2 cb 绘制完成时调用的回调函数

javascript 复制代码
QRCode.toString('http://www.google.com', function (err, string) {
  if (err) throw err
  console.log(string)
})
相关推荐
福兮说18 分钟前
IP 地址转整数的七个坑:192.168.1.1 算出负数、127.1 也是合法地址、存进 INT 直接溢出
javascript·网络·网络协议·tcp/ip·mysql·golang
MayZork20 分钟前
Qt 开发集成CMake + vcpkg
开发语言·c++·qt
YQteamdyq28 分钟前
为什么 { ...state } 会悄悄杀掉响应式?yq-sanyi v0.4.2 的三处修复
前端·javascript
零基础12332 分钟前
PDF 处理工具全攻略:pdf24、PDFgear、Adobe Acrobat DC 与 Stirling-PDF 深度对比
java·开发语言·pdf
Java后端的Ai之路35 分钟前
01-React基础教程
开发语言·前端·python·react.js·前端框架
我的xiaodoujiao1 小时前
Django 基础知识详细图文教程 14-Django 表单定义与使用
开发语言·后端·python·django
(Charon)1 小时前
【C++面试】单例模式:懒汉式与饿汉式的实现、区别与线程安全
开发语言·c++·面试
anew___1 小时前
《从零手写操作系统 (29):管道与重定向进阶——命名管道、Here Document与Shell语法扩展》
java·开发语言·前端·javascript·网络
jimy11 小时前
虚函数和 RTTI实现运行时多态
开发语言·c++
一个有温度的技术博主1 小时前
凌晨两点的死锁:当线程“互相等死“
开发语言·后端·场景