H5公众号-canvas海报分享图+生成二维码

先npm install 安装这俩个插件,然后导入需要的页面中

二维码:

//第一步:引入:
import Qrcode from "@xkeshi/vue-qrcode";
// 第二步:注册:
components: {
    qrcode: Qrcode //二维码的插件需要注册组件
  },
// 第三步:使用:
<template>
	 <qrcode :value="qrcodeUrl"  style="width: 72px;height: 72px"></qrcode>
<template>Ï
// 第四步:
qrcodeUrl: 'https://baidu.com' // 自己定义地址

生成海报:

现在页面上写好海报的样式,然后通过this.$refs.xxx获取到节点传入html2canvas方法方法中,再赋值给img标签显示,浏览器默认图片自带保存功能

mage.crossOrigin支持跨域图片 这个一定要放在src赋值之前,否则再ios手机上图片显示不出来

import html2canvas from "html2canvas";
// 调用:
html2canvas(this.$refs.xxxx, { backgroundColor: null }).then(
        canvas => {
          // 转成图片,生成图片地址
          this.imgUrl = canvas.toDataURL("image/png");
          this.canvasShow = true;
        }
    );

海报一般都有接口返回的网络图,因为canvas无法绘制网络图,所以要下载到本地再调用html2canvas方法

handelCanvas() {
    const datas = {
      AlbumId: this.albumIdId
    };
    this.$axios.post(this.api.xxxxx, datas).then(res => {
      // console.log("分享快照==>", res);
      this.albumsShare = res.data;
      var that = this;
      this.main(res.data.HeadImg, function(base64) {
        that.HeadImg = base64;
      });
      res.data.AlbumImage = res.data.AlbumImage.substring(
        0,
        res.data.AlbumImage.indexOf("?")
      );
      console.log(res.data.AlbumImage);
      this.main(res.data.AlbumImage, function(base64) {
        that.AlbumImage = base64;
      });
    });
  },
 // 将图片转base64
  getBase64Image(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0, img.width, img.height);
    var dataURL = canvas.toDataURL("image/png"); // 可选其他值 image/jpeg
    return dataURL;
  },
  // 下载网络图片
  main(src, cb) {
    var image = new Image();
    image.crossOrigin = "*"; // 支持跨域图片 这个一定要放在src赋值之前,否则再ios手机上图片显示不出来
    image.src = src + "?v=" + Math.random(); // 处理缓存
    var that = this;
    image.onload = function() {
      var base64 = that.getBase64Image(image);
      cb && cb(base64);
    };
  },
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值