动态生成二维码

681 阅读2分钟

二维码相对于条形码存储信息更多,使用更广泛。一般我们静态生成二维码会使用草料二维码。动态生成(代码中)的话一般有以下几种:

一、jquery.qrcode

      这里不讨论了,详细见wjhsh.net/zhengweijie…

二、qrcode

      这个库可以用在各种环境下。vue、react、静态页面、node环境下,只要是js环境下都可以。使用上也没什么坑。

     1、静态页面

      

QRCode.toCanvas(document.getElementById('canvas'), 'https://www.baidu.com/', function (error) { if (error) console.error(error) console.log('success!'); })

页面效果

2、commonjs和esmodule下

安装 :yarn add qrcode

引入:

var QRCode = require('qrcode')或者

import QRCode from 'qrcode'

使用:

  mounted() {    QRCode.toDataURL('https://www.baidu.com/')      .then((url) => {        this.url = url      })      .catch((err) => {        console.error(err)      })  },

得到的url赋值给页面中的img

<img :src="url" alt="">

详细api见:www.npmjs.com/package/qrc…

官网还有其他用法,这里不都列举了

官网地址:www.npmjs.com/package/qrc…

三、vue-qr(线上经常性出不来二维码,不建议使用)

这个是专门给vue使用的,使用上稍微有一点坑(vue2和vue3引入方式不一样),不支持ie浏览器

安装:yarn add vue-qr

vue2引入:import vueQr from 'vue-qr/src/packages/vue-qr.vue'

vue3引入:import vueQr from 'vue-qr'

以组件方式使用:注册组件->components:{vueQr}

->使用组件

<vue-qr logoSrc="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fc-ssl.duitang.com%2Fuploads%2Fblog%2F202012%2F19%2F20201219112305_6a409.jpeg&refer=http%3A%2F%2Fc-ssl.duitang.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1667036841&t=173e33e21c017e1675505419da337f21" :text="qrUrl" :size="260"></vue-qr>

主要api

text:要编码的内容(写文字展示文字,写地址跳转到地址)
size:大小(图片的宽高)
margin:二维码图像的外边距,默认20px
colorDark:实点颜色
colorLight:空白区颜色
bgSrc:背景图地址
gifBgSrc:背景图gif地址,设置后普通背景图失效,设置此选项会影响性能
logoSrc:中间logo图地址
logoScale:logo大小,太大会导致解码失败
logoMargin:logo外边距
logoBackgroundColor:logo背景色,需要设置logoMargin
logoCornerRadius:logo边框圆角
callback:第一个参数生成二维码的地址,第二个参数props传过来qid

官网地址:www.npmjs.com/package/vue…

qrcode和vue-qr对比,qrcode使用范围更广一些,vue-qr配置项更多一些,出来效果更好看,但是vue-qr线上问题较多,个人建议选择qrcode

四、qrcanvas

1、静态页面使用

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title></head><body>    <div id="qrcode"></div><script src="https://cdn.jsdelivr.net/npm/qrcanvas@3"></script><script>    const canvas = qrcanvas.qrcanvas({  data: 'https://www.baidu.com/'});document.getElementById('qrcode').appendChild(canvas);</script></body></html>

2、模块内使用详细见官方文档:www.npmjs.com/package/qrc…

gitee.com/mirrors/qrc…

五、直接在线生成

  这个比较好玩,简单,直接一个标签就行

<img style="width: 300px;height: 300px;" src="https://api.qrserver.com/v1/create-qr-code?data=http://goqr.me/api/" />

参考文章:

blog.csdn.net/amihui/arti…

有几个好多年没更新的或者不太好用的这里就不列举了。以上是偏应用的,如果对二维码怎么实现的可以参考下这几篇文章:

juejin.cn/post/690015…

cloud.tencent.com/developer/a…

其他参考文章:www.cnblogs.com/javalinux/p…

cloud.tencent.com/developer/a…