前端生成二维码及把页面转为图片保存到本地

以vue项目为例,其他类型项目其实也是一样的

所需components:

  1. QRCode

  2. html2canvas

npm install qrcodejs2 -- save

npm install html2canvas --save 

 在需要使用的地方引入

import QRCode from 'qrcodejs2'
import html2canvas from 'html2canvas'

 生成二维码

 creatQrCode() {
      var qrcode = new QRCode(this.$refs.qrCodeUrl, {
        text: this.url + 'register?code=' + this.info.code,
        colorDark: '#000000',
        colorLight: '#ffffff',
        width:80,
        height:80,
        correctLevel: QRCode.CorrectLevel.H
      })
    },

// this.$refs.qrCodeUrl 用来承载二维码的容器
// text 二维码包含的信息
// 其余配置看文档去

dom转图片

   toImage() {
      html2canvas(this.$refs.imageWrapper).then(canvas => {
        this.imgUrl = canvas.toDataURL('image/png')
        if (this.imgUrl !== '') {
          var a = document.createElement('a') // 创建一个a节点插入的document
          var event = new MouseEvent('click') // 模拟鼠标click点击事件
          a.download = '图片名字' // 设置a节点的download属性值
          a.href = this.imgUrl // 将图片的src赋值给a节点的href
          a.dispatchEvent(event) // 触发鼠标点击事件
        }
      })
    }

// this.$refs.imageWrapper 容器,生成的图片就是其中包含的内容
// this.imgUrl 就是生成的图片地址

 小demo,供参考

<template>
  <div class="bgBox" ref="imageWrapper">
    <div class="name">{{ info.name }}</div>
    <img class="bgImg" :src="img" alt="" />
    <div class="qrcode" ref="qrCodeUrl"></div>
  </div>
</template>

<script>
import QRCode from 'qrcodejs2'
import html2canvas from 'html2canvas'
import img from '@/assets/img/bg.jpg'
export default {
  data() {
    return {
      info: {},
      img,
      // url:process.env.VUE_APP_BASE_API
      url: 'https://baidu.com/'
    }
  },
  mounted() {
    this.info = this.$route.query
    this.creatQrCode()
    this.$nextTick(() => {
      this.toImage()
    })
  },
  methods: {
    // 生成二维码
    creatQrCode() {
      var qrcode = new QRCode(this.$refs.qrCodeUrl, {
        text: this.url + 'register?code=' + this.info.code,
        colorDark: '#000000',
        colorLight: '#ffffff',
        correctLevel: QRCode.CorrectLevel.H
      })
    },
    // dom转图片
    toImage() {
      html2canvas(this.$refs.imageWrapper).then(canvas => {
        this.imgUrl = canvas.toDataURL('image/png')
        if (this.imgUrl !== '') {
          var a = document.createElement('a') // 创建一个a节点插入的document
          var event = new MouseEvent('click') // 模拟鼠标click点击事件
          a.download = '图片名字' // 设置a节点的download属性值
          a.href = this.imgUrl // 将图片的src赋值给a节点的href
          a.dispatchEvent(event) // 触发鼠标点击事件
        }
      })
    }
  }
}
</script>

<style lang="less" scoped>
.bgBox {
  position: relative;
  width: 750px;
  height: 1334px;
  .bgImg {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
  }
  .name {
    position: absolute;
    top: 64px;
    left: 330px;
    z-index: 2;
    font-size: 42px;
  }
  .qrcode {
    position: absolute;
    bottom: 44px;
    left: 40px;
    width: 160px;
    height: 160px;
  }
}
</style>

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在uniapp生成二维码保存到本地,可以按照以下步骤进行操作: 1. 首先,使用weapp.qrcode生成二维码。这个库可以用于生成二维码数据。 2. 然后,使用uni.canvasToTempFilePath方法将生成的二维码换为临时图片文件。 3. 使用canvas绘制二维码。 4. 接下来,使用uni.canvasToTempFilePath方法再次生成图片文件。 5. 最后,使用uni.saveImageToPhotosAlbum方法将图片保存到本地相册。 具体代码示例如下: ```javascript // 1. 使用weapp.qrcode生成二维码 const qrcode = require('weapp.qrcode'); const qrData = 'your qrcode data'; const qrcodeImg = qrcode.createQrCodeImg(qrData); // 2. 使用uni.canvasToTempFilePath生成临时图片文件 uni.canvasToTempFilePath({ canvasId: 'canvas', // canvas的id success: function (res) { const tempFilePath = res.tempFilePath; // 3. 使用canvas绘制二维码 const ctx = uni.createCanvasContext('canvas'); ctx.drawImage(qrcodeImg, 0, 0, 200, 200); // 绘制二维码图片 ctx.draw(false, function () { // 4. 使用uni.canvasToTempFilePath生成图片文件 uni.canvasToTempFilePath({ canvasId: 'canvas', success: function (res2) { const qrCodeFilePath = res2.tempFilePath; // 5. 使用uni.saveImageToPhotosAlbum保存到本地 uni.saveImageToPhotosAlbum({ filePath: qrCodeFilePath, success: function () { console.log('保存成功'); }, fail: function (err) { console.log('保存失败', err); } }); }, fail: function (err2) { console.log('生成二维码图片文件失败', err2); } }); }); }, fail: function (err3) { console.log('生成临时图片文件失败', err3); } }); ``` 通过以上步骤,你就可以在uniapp生成二维码保存到本地相册了。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值