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


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 相关文章推荐
js href的用法
May 13 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
JavaScript转换农历类实现及调用方法
Jan 27 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 Javascript
jquery 扑捉回车键事件代码
Apr 24 Javascript
js获取url中&quot;?&quot;后面的字串方法
May 15 Javascript
jQuery判断指定id的对象是否存在的方法
May 22 Javascript
javascript弹出拖动窗口
Aug 11 Javascript
Javascript单例模式的介绍和实例
Oct 08 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
Aug 17 Javascript
浅谈es6中export和export default的作用及区别
Feb 07 Javascript
vue移动端下拉刷新和上拉加载的实现代码
Sep 08 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用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
详解React Native网络请求fetch简单封装
2017/08/10 Javascript
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
Django中modelform组件实例用法总结
2020/02/10 Python
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
编写strcpy函数
2014/06/24 面试题
软件测试题目
2013/02/27 面试题
《欢乐的泼水节》教学反思
2014/04/22 职场文书
网络编辑求职信
2014/04/30 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
期末考试复习计划
2015/01/19 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
导游词之西安骊山
2019/12/03 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python