vue使用qrcode生成二维码,并在二维码下面添加文字描述

1、最终效果

2、代码

// url 二维码内容链接 size 二维码大小(高宽) qrText 底部描述文字 color 二维码颜色

const initCanvas = async (url, size,  qrText,color = '#000') => {
      const canvas = await QRCode.toCanvas(url, {
        errorCorrectionLevel: 'H',
        margin: 1, // 设置padding 二维码的padding
        height: size,
        width: size,
        scal: 177,
        color: {dark: color},
        rendererOpts: {quality: 0.9}
      })
      const fontWeight='bold' // 字体 粗体 格式
      const fontSize = 14 // 字体大小
      const tb = 5 // 底部文字上下间距
      const realHeight = size + fontSize + 2*tb //实际高度
      // 画布上下文对象
      const ctx = canvas.getContext("2d");
      // 获取二维码数据
      const data = ctx.getImageData(0, 0, size, size);
      ctx.fillStyle = "#fff"
      canvas.setAttribute('height', realHeight); // 重设画布像素高度
      canvas.style.setProperty('height', realHeight + 'px'); // 重设画布实际高度
      ctx.fillRect(0, 0, size, realHeight)
      ctx.putImageData(data, 0, 0)// 填充二维码数据
      ctx.font = `${fontWeight} ${fontSize}px Arial`;
      const textWidth = ctx.measureText(qrText).width; //文字真实宽度
      const ftop = size + tb; //文字距顶部位置
      const fleft = (size - textWidth) / 2; //根据字体大小计算文字left
      const textPadding = fontSize / 2; //字体边距为字体大小的一半可以自己设置
      // 设置底部背景色
      ctx.fillStyle = "#fff";
      ctx.fillRect(0, size, size, realHeight - 2*tb);
      // 设置字体填充位置
      ctx.fillRect(
          fleft - textPadding / 2,
          ftop - textPadding / 2,
          textWidth + textPadding,
          fontSize + textPadding
      );
      ctx.textBaseline = "top"; //设置绘制文本时的文本基线。
      ctx.fillStyle = "#333";// 字体颜色
      ctx.fillText(qrText, fleft, ftop);
      console.log(canvas.toDataURL())
      return canvas
    }

 我这是vue3测试,vue2可以在method 中定义 函数,还有就是在文件中引入qrcode

import QRCode from 'qrcode'
methods: {
    initCanvas(url, size,qrText, color = '#000') {
      代码内容......
    },
}

vue 二维码打包或单个下载 可以参考我的另一篇文章

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
Vue生成二维码可以使用两种方式,一种是使用qrcode库,另一种是使用vue-qr(有icon)。关于qrcode库的使用,可以通过npm安装qrcodejs2库,并在需要生成二维码的页面中导入QRCode,然后在模板中创建一个具有相应ref属性的div元素,将二维码渲染到这个div中。具体代码如下: ```javascript // 安装qrcodejs2 npm install --save qrcodejs2 // 页面中导入QRCode import QRCode from 'qrcodejs2' // 模板中创建div元素 <div class="qrcode" ref="qrCodeUrl"></div> // 在方法中创建二维码 methods: { creatQrCode() { var qrcode = new QRCode(this.$refs.qrCodeUrl, { text: 'https://blog.csdn.net/weixin_42601136', width: 100, height: 100, colorDark: '#000000', colorLight: '#ffffff', correctLevel: QRCode.CorrectLevel.H }) } }, // 在mounted钩子中调用creatQrCode方法 mounted() { this.creatQrCode(); } ``` 如果想使用vue-qr生成带有icon的二维码,可以在vue文件中导入qrcode库,并按照相应的文档使用vue-qr组件。具体代码如下: ```javascript // 在script标签中导入qrcode import QRCode from "qrcode"; // 使用vue-qr组件 <template> <div> <vue-qr :value="qrCodeUrl" :icon="iconUrl"></vue-qr> </div> </template> // 在data中定义二维码和icon的地址 data() { return { qrCodeUrl: 'https://blog.csdn.net/weixin_42601136', iconUrl: 'icon.png' } } ``` 以上就是在Vue使用qrcode生成二维码的方法。如果想了解更多细节,可以参考相关文档和示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [利用VUE生成二维码(两种方式)](https://blog.csdn.net/weixin_42601136/article/details/114839489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [在Vue使用QRCode生成二维码](https://blog.csdn.net/simper_boy/article/details/95214062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少十步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值