博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序 分享的图片使用canvas生成
阅读量:2167 次
发布时间:2019-05-01

本文共 2615 字,大约阅读时间需要 8 分钟。

首先来看一下整体的一个效果就是下图这样子的

一.整理一下思路

1.首先要生成一个canvas画布

2.由于onShareAppMessage 不能是异步的哦,promise什么的,就当没有过一样。。所以我们在onload或者是onshow中调用,我主要是在获取PDP详细信息的接口中的complete方法去调用生成画布的方法

3.在onShareAppMessage的return对象中把上述生成的路径直接赋值给imageUrl

4.需要注意的是开发者工具中的图片会裂掉,所以最好在手机中查看(这也是排查了很久结果用手机分享的时候发现图片其实是有的)

 

二.实现代码

HTML

//注意这边使用的是hidden

获取PDP详情接口的complete方法中调用生成canvas画布

//获得详情页面数据  getDetailInfo: function () {    //判断有没有groupSn,没有就用productCode    var productId = {      "productCode": this.data.productCode,    };    $.get({      url: "goods",      port: "goods",      data: productId,      success: (res) => {         //成功后的功能代码      },      complete:res=>{        this.getLogoImage()//下载分享页面中的图片      },    })  },
// 下载logo图  getLogoImage: function (e) {    let url = this.data.goodsPic[0]    let url1, url2;    return new Promise((resolve, reject) => {      this.promiseFun(url).then((res) => {        url1 = res        var productImage = 'https://mpuat.ibaiqiu.com/img/public/whiteBg.jpg';        return this.promiseFun(productImage, 2)      }).then((res) => {        url2 = res;      this.createshareImg(url1, url2).then(res=>{        resolve(res)      });    })  })  },  //画布生成  createshareImg(mainPic,backPic){    var that = this;    return new Promise((resolve, reject) => {      var ctx = wx.createCanvasContext('myCanvas', that);      ctx.clearRect(0, 0,500, 400);      ctx.fillRect(0, 0, 500, 400);      ctx.drawImage(backPic, 0, 0, 500, 400);      ctx.drawImage(mainPic,21, 0, 200, 199);      ctx.draw(false, (res) => {        setTimeout(() => {            wx.canvasToTempFilePath({              canvasId: 'myCanvas',              success: function (res) {                wx.saveFile({                  tempFilePath:  res.tempFilePath,                  success:function(res){                    that.setData({                      imagePath: res.savedFilePath                    })                    console.log('imagePath', that.data.imagePath)                  }                })              },              fail: function (res) {                var downLoadSrc=""                reject(downLoadSrc);                console.log(res);              },              complete: function () {                wx.hideLoading()                ctx = null;              },            }, that);        });      })    })  },
onShareAppMessage: function (res) {    let detailData = wx.getStorageSync('detailsOption');    return {      title: '邀您购买',      imageUrl:this.data.imagePath,      path: '/pages/details/details?id=' + detailData.id + '&groupSn=' + detailData.groupSn + '&thirdSession=' + wx.getStorageSync("thirdSession")    }  },

 

转载地址:http://bgpzb.baihongyu.com/

你可能感兴趣的文章
Jmeter之正则
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Python】用Python打开csv和xml文件
查看>>
【Loadrunner】性能测试报告实战
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>