qrcode.js生成二维码,将canvas改成img,并长按保存

个人blog,欢迎关注加收藏

qrcode.js生成二维码:

1、 安装qrcode.js:
npm install qrcode

2、 html内容:

<template>
  <div id="QRCode"> <!-- 保存二维码的容器 -->
        <div id='code'></div> 
        <canvas id="canvas"></canvas>
    </div>
</template>

3、 js部分:

import QRCode from 'qrcode' //引入qrcode
  export default{
    data(){
      return {
      }
    },
    components: {
      QRCode: QRCode //引入 QRCode组件
    },
    methods:{
      useqrcode(url){//url是生成二维码的内容
        var canvas = document.getElementById('canvas')
        QRCode.toCanvas(canvas, url, function (error) {
          if (error) console.error(error)
          console.log('success!');
        })
      }
    },
    mounted(){
      this.useqrcode('www.baidu.com');//调用生成二维码的方法
    }
  }


将canvas修改为img:

在方法useqrcode(url)中加入以下代码:

useqrcode(url){//url是生成二维码的内容
    let _this = this;

    let fatherQrcode = document.getElementById('QRCode');           
    //先清除fatherQrcode的img子节点:防止重复添加
    let childs = fatherQrcode.children; 
    console.log(childs);
    for(var i = childs .length - 1; i >= 0; i--) {
        // console.log(typeof childs[i])
        if(childs[i].className == "QRCode"){
            fatherQrcode.removeChild(childs[i]);
        }
    }


    //生成二维码
    var canvas = document.getElementById('canvas')
    QRCode.toCanvas(canvas, url, function (error) {
      if (error) console.error(error)
      console.log('success!');



       //获取网页中的canvas对象转换为img
        var mycanvas1=document.getElementsByTagName('canvas')[0];
        mycanvas1.style.display = 'none'//隐藏生成的canvas
        //将转换后的img标签插入到html中
        var img=_this.convertCanvasToImage(mycanvas1);
        img.classList.add("QRCode");//为img添加类名QRCode
        fatherQrcode.append(img);//imagQrDiv表示你要插入的容器id

    })
  },
  //转换为img
    convertCanvasToImage(canvas) {
        //新Image对象,可以理解为DOM
        var image = new Image();
        // canvas.toDataURL 返回的是一串Base64编码的URL,当然,浏览器自己肯定支持
        // 指定格式 PNG
        image.src = canvas.toDataURL("image/png");
        return image;
    },

长按保存图片

css部分:

/* 二维码长按保存图片 */
.share>>>img.QRCode{
    -webkit-touch-callout:default;
}
你可以使用 qrcode.js 库生成带有 logo 的二维码。首先,你需要将 logo 转换为 base64 编码的字符串,然后以 data URL 的形式插入到二维码中心。 以下是一个例子: ```javascript // 导入 qrcode.js 库 import QRCode from 'qrcode' // 获取二维码容器元素 const qrcodeContainer = document.getElementById('qrcode') // 生成二维码 QRCode.toDataURL('https://example.com') .then(qrcodeDataUrl => { // 创建一个图片元素 const img = document.createElement('img') img.src = qrcodeDataUrl // 创建一个 canvas 元素 const canvas = document.createElement('canvas') canvas.width = img.width canvas.height = img.height // 在 canvas 上绘制二维码图片 const ctx = canvas.getContext('2d') ctx.drawImage(img, 0, 0) // 将 logo 插入到二维码中心 const logo = new Image() logo.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' logo.onload = () => { const logoSize = img.width * 0.2 // logo 大小为二维码的 20% const logoX = (img.width - logoSize) / 2 const logoY = (img.height - logoSize) / 2 ctx.drawImage(logo, logoX, logoY, logoSize, logoSize) // 在容器中插入带 logo 的二维码 qrcodeContainer.appendChild(canvas) } }) ``` 注意,以上代码中的 logo 数据 URL 只是一个示例,请替换为你自己的 logo 数据 URL。同时,为了避免跨域问题,你需要将 logo 图片上传到你自己的服务器并获取其数据 URL,而不是直接使用外部图片链接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值