3.2.2 • Published 6 months ago

u-qrcode2 v3.2.2

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
6 months ago

uQRCode

点击群号加入群聊【uQRCode交流群】:695070434

uQRCode 生成方式简单,可扩展性高,适用所有前端应用和Node.js服务端,可运行到所有支持canvas的平台。支持NVUE(NVUE中使用GCanvas)。

支持自定义二维码渲染规则,可通过uQRCode API得到矩阵信息后,自行实现canvas或view+css渲染二维码,如随机颜色、圆点、方块、块与块之间的间距等,详情参考示例项目。

插件市场

https://ext.dcloud.net.cn/plugin?id=1287

github

https://github.com/Sansnn/uQRCode

npm

https://www.npmjs.com/package/u-qrcode

示例预览

https://static-c15f4b57-ef97-4d2b-b939-f580f910d7e2.bspapp.com

二维码

什么是QR码

QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化。

QR码的特点

一是高速读取(QR就是取自“Quick Response”的首字母),通过摄像头从拍摄到解码到显示内容也就三秒左右,对摄像的角度也没有什么要求;

二是高容量、高密度,理论上内容经过压缩处理后可以存7089个数字,4296个字母和数字混合字符,2953个8位字节数据,1817个汉字;

三是支持纠错处理,按照QR码的标准文档说明,QR码的纠错分为4个级别,分别是:

  • level L : 最大 7% 的错误能够被纠正;
  • level M : 最大 15% 的错误能够被纠正;
  • level Q : 最大 25% 的错误能够被纠正;
  • level H : 最大 30% 的错误能够被纠正;

四是结构化,看似无规则的图形,其实对区域有严格的定义。

更多二维码介绍及原理:https://blog.csdn.net/jason_ldh/article/details/11801355

组件使用

导入u-qrcode组件后,在 template 中创建 <u-qrcode/> 组件

<u-qrcode ref="qrcode" canvas-id="qrcode" value="uQRCode"></u-qrcode>

属性说明

属性名类型可选值默认值是否必填说明
canvasIdString--组件标识/canvasId
valueString--二维码内容
sizeNumber-354二维码大小,默认单位px,rpx需要使用uni.upx2px()转换
optionsObject--参数可选项,详见下方options说明

事件说明

事件名参数返回值说明
click-void点击事件
complete-Object生成完成事件,返回值success: true表示生成成功,false生成失败

方法说明

方法名参数返回值说明
remake-void重新生成
toTempFilePathObject:callbackvoid导出临时路径
saveObject:callbackvoid保存

options说明

属性名类型可选值默认值是否必填说明
typeNumberNumber--1二维码版本
errorCorrectLevelString/NumberL/M/Q/H/1/0/3/2H纠错等级L/M/Q/H分别对应1/0/3/2
useDynamicSizeBoolean-false是否使用动态尺寸,可以去除二维码小块白色细线
marginNumber-0填充边距,默认单位px
backgroundObject--背景设置,详见下方options.background说明
foregroundObject--前景设置,详见下方options.foreground说明
positionDetectionObject--定位角设置,详见下方options.positionDetection说明
separatorObject--分割图案设置,详见下方options.separator说明
alignmentObject--对齐图案设置,详见下方options.alignment说明
timingObject--时序图案设置,详见下方options.timing说明
darkBlockObject--暗块设置,详见下方options.darkBlock说明
versionInformationObject--版本信息设置,详见下方options.versionInformation说明

options.background说明

属性名类型可选值默认值是否必填说明
colorString-#FFFFFF背景色,若需要透明背景可设置为rgba(0,0,0,0)
imageObject--背景图片设置,详见下方options.background.image说明

options.background.image说明

属性名类型可选值默认值是否必填说明
srcString--背景图片路径
widthNumber-1指定背景图片宽度,1为二维码size的100%
heightNumber-1指定背景图片高度,1为二维码size的100%
alignArray'left'/'center'/'right', 'top'/'center'/'bottom''center', 'center'指定背景图片对齐方式,0为水平方位,1为垂直方位
anchorArray-0, 0指定背景图片锚点,0为X轴偏移量,1为Y轴偏移量
alphaNumber0-11指定背景图片透明度

options.foreground说明

属性名类型可选值默认值是否必填说明
colorString-#FFFFFF前景色
imageObject--前景图片设置,详见下方options.foreground.image说明

options.foreground.image说明

属性名类型可选值默认值是否必填说明
srcString--前景图片路径
widthNumber-1/4指定前景图片宽度,1为二维码size的100%
heightNumber-1/4指定前景图片高度,1为二维码size的100%
alignArray'left'/'center'/'right', 'top'/'center'/'bottom''center', 'center'指定前景图片对齐方式,0为水平方位,1为垂直方位
anchorArray-0, 0指定前景图片锚点,0为X轴偏移量,1为Y轴偏移量

options.positionDetection说明

属性名类型可选值默认值是否必填说明
backgroundColorString-options.background.color定位角区域背景色,默认值跟随背景色
foregroundColorString-options.foreground.color定位角小块颜色,默认值跟随前景色

options.separator说明

属性名类型可选值默认值是否必填说明
colorString-options.background.color分割区域颜色,默认值跟随背景色

options.alignment说明

属性名类型可选值默认值是否必填说明
backgroundColorString-options.background.color对齐区域背景色,默认值跟随背景色
foregroundColorString-options.foreground.color对齐小块颜色,默认值跟随前景色

options.timing说明

属性名类型可选值默认值是否必填说明
backgroundColorString-options.background.color时序区域背景色,默认值跟随背景色
foregroundColorString-options.foreground.color时序小块颜色,默认值跟随前景色

options.darkBlock说明

属性名类型可选值默认值是否必填说明
colorString-options.foreground.color暗块颜色,默认值跟随前景色

options.versionInformation说明

属性名类型可选值默认值是否必填说明
backgroundColorString-options.background.color版本信息区域背景色,默认值跟随背景色
foregroundColorString-options.foreground.color版本信息小块颜色,默认值跟随前景色

u-qrcode.js使用

引入u-qrcode.js

import uQRCode from '../../uni_modules/Sansnn-uQRCode/js_sdk/u-qrcode';

或者使用npm安装

npm i u-qrcode

import uQRCode from 'u-qrcode';

nodejs引入

import uQRCode from 'u-qrcode/module';

template 中创建 <canvas/> 组件并设置 id,画布宽高

<canvas id="qrcode" canvas-id="qrcode" :style="{ width: `${size}px`, height: `${size}px` }"></canvas>

script 中调用生成方法

import uQRCode from '../../uni_modules/Sansnn-uQRCode/js_sdk/u-qrcode';

export default {
  data() {
    return {
      text: 'uQRCode',
      size: 256
    }
  },
  onReady() {
    const ctx = uni.createCanvasContext('qrcode');
    const uqrcode = new uQRCode(
      {
        text: this.text,
        size: this.size
      },
      ctx
    );
    uqrcode.make();
    uqrcode.draw();
  }
}

new uQRCode(options, canvasContext, loadImage)说明

属性名类型可选值默认值是否必填说明
optionsObject--包含组件属性中的options的所有属性,详见下方options说明
canvasContextObject--canvas绘画上下文
loadImagePromise--绘制图片时,某些平台必传,例如微信小程序2d绘图需要创建Image对象,不能直接使用路径,这时就需要传入canvas.createImage给loadImage方法,否则无法绘制图片

options说明,包含组件属性中的options的所有属性,下方仅列举未包含的属性,其余属性请移步到组件属性options说明查看

属性名类型可选值默认值是否必填说明
textString--二维码内容
sizeNumber-354二维码大小

uQRCode实例属性

属性名类型说明
optionsObject实例化传入的选项值
canvasContextObject画布实例
makeDataObject制作二维码全部数据
modulesArray制作二维码主要模块数据
moduleCountNumber模块数量

uQRCode实例方法

方法名参数返回值说明
make-void制作二维码方法
drawoptionsPromise绘制二维码方法,绘制层级关系,最底层背景 -> 背景图片 -> 前景 -> 最顶层前景图片,options见下方说明

draw(options)说明

属性名类型可选值默认值是否必填说明
drawBackgroundObject: {before, after}--绘制背景前后可执行自定义方法before,after
drawBackgroundImageObject: {before, after}--绘制背景图前后可执行自定义方法before,after
drawForegroundObject: {before, after}--绘制前景前后可执行自定义方法before,after
drawForegroundImageObject: {before, after}--绘制前景图前后可执行自定义方法before,after

uQRCode静态属性

属性名类型说明
errorCorrectLevelObject纠错等级
defaultsObject预设默认值

uQRCode静态方法

方法名参数返回值说明
deepReplaceo, r替换后的新对象对象属性深度替换

常见问题

如何扫码跳转指定网页

二维码内容直接放入完整的网页地址即可,例如:https://ext.dcloud.net.cn/plugin?id=1287。微信客户端不能是ip地址。

nvue打包后生成失败

Canvas是作为独立的模块,打包时需要选择使用Canvas模块才能正常使用相关的功能。 需要在manifest.json的代码视图中配置如下(暂时还不支持可视化界面操作):

"app-plus" : {
  /* 模块配置 */
  "modules" : {
    "Canvas" : "nvue canvas"    //使用Canvas模块
  },
  //...
},
//...

保存好提交云端打包。

3.2.2

6 months ago