微信小程序前端自定义分享的实现方法


Posted in Javascript onJune 13, 2019

背景

目前手上有一个小程序的项目,希望转发时分享消息的界面能够自定义,然而微信小程序只提供设置图片的url和title。

/**
  * 用户点击右上角分享
  */
 onShareAppMessage: function() {
  return {
   imageUrl:'',
   title:''
  };
 }

实现

微信小程序前端自定义分享的实现方法

我们要转发的显示内容多了一点东西:头像,用户名和点赞数。好在这个排版不是很复杂,所以我们思考了一下通过canvas去生成一张图片再return canvas所生成的图片url。

代码如下(其实还要作出一些显示上的优化,具体你们自己去调试):

先在页面里新建一个canvas 标签

<canvas canvas-id="canvasid" style="width: 375px; height: 500px;" wx:if="{{canvasShow}}"></canvas>
let context = wx.createCanvasContext('canvasid')
   context.drawImage(back.path, 0, 60, backWidth, backHeight) //绘制下方背景图
   //绘制圆形头像,参考教程:https://www.jianshu.com/p/9a6ee2648d6f 第二种方法

   context.save();
   var d = 2 * 25;
   var cx = 0 + 25;
   var cy = 0 + 25;
   context.arc(cx, cy,25, 0, 2 * Math.PI);
   context.clip();
   context.drawImage(avatar.path, 0,0, d, d);
   context.restore();
   //绘制名字和点赞数
   context.setFontSize(14)
   context.fillText('userName', 70, 32)
   let zanLength = ('100' + '次赞').length
   context.fillText('100'+ '次赞', 375 - 14 * zanLength, 32)
   //执行draw进行渲染 并返回图片url
   context.draw(true, () => {
    //此方法应执行在draw的回调中
    wx.canvasToTempFilePath({
     x: 0,
     y: 0,
     width: 375,
     height: 400,
     destWidth: 375,
     destHeight: 400,
     canvasId: 'canvasid',
     success(res) {
    //设置onShareAppMessage所返回的数据格式
      let shareInfo = {
       title: 'customTitle',
       imageUrl
      }
      //隐藏画布
      that.setData({
       canvasShow: false
      })
     }
    })
   });

然而!

在canvas中绘制的图片要在真机上显示出来是有问题的(画布污染),非同源的图片在canvas不会显示出来的。后来我们使用 wx.getImageInfo去获取图片信息,通过里面的地址去显示图片(相当于是把图片转了一道)。

wx.getImageInfo({
        src: imgUrl,
        success: function(res) {
           /**拿到返回值res[0].path,再把该值作为canvas绘制图片的路径 
            context.drawImage(res[0].path,x,x,x)**/
          let drawImgUrl = res[0].path
        }
      });

emmmm....文章很短暂,这里只是提供一下解决的思路,希望能帮助到大家~

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jQuery Tips 为AJAX回调函数传递额外参数的方法
Dec 28 Javascript
javascript的parseFloat()方法精度问题探讨
Nov 26 Javascript
如何实现textarea里的不同文本显示不同颜色
Jan 20 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
May 15 Javascript
基于javascript制作微博发布栏效果
Apr 04 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
Aug 19 Javascript
Bootstrap缩略图的创建方法
Mar 22 Javascript
详解react关于事件绑定this的四种方式
Mar 09 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
Jan 02 Javascript
Vue实现类似Spring官网图片滑动效果方法
Mar 01 Javascript
基于layui的下拉列表的数据回显方法
Sep 24 Javascript
VueQuillEditor富文本上传图片(非base64)
Jun 03 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
Jun 13 #Javascript
javascript实现的字符串转换成数组操作示例
Jun 13 #Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 #Javascript
深入了解JavaScript代码覆盖
Jun 13 #Javascript
js使用cookie实现记住用户名功能示例
Jun 13 #Javascript
探索JavaScript中私有成员的相关知识
Jun 13 #Javascript
详解vue中的父子传值双向绑定及数据更新问题
Jun 13 #Javascript
You might like
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
Javascript算符的优先级介绍
2013/03/20 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
django实现HttpResponse返回json数据为中文
2020/03/27 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
公司管理建议书范文
2014/03/12 职场文书
yy司仪主持词
2014/03/22 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
个人廉政承诺书
2015/04/28 职场文书
个人原因辞职信模板
2015/05/13 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript
k-means & DBSCAN 总结
2021/04/27 Python