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


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实战_读书笔记2 选择器
Jan 22 Javascript
JavaScript中的作用域链和闭包
Jun 30 Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 Javascript
基于jquery实现即时检查格式是否正确的表单
May 06 Javascript
关于RequireJS的简单介绍即使用方法
Oct 20 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
Mar 22 Javascript
Vue引入jquery实现平滑滚动到指定位置
May 09 jQuery
原生js封装的ajax方法示例
Aug 02 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
Jun 14 Javascript
如何基于viewport vm适配移动端页面
Nov 13 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
ThinkPHP令牌验证实例
2014/06/18 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
sina的lightbox效果。
2007/01/09 Javascript
jQuery中filter()和find()的区别深入了解
2013/09/25 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
javascript中clone对象详解
2014/12/03 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
react 应用多入口配置及实践总结
2018/10/17 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
js实现每日签到功能
2018/11/29 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
在Python的web框架中配置app的教程
2015/04/30 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
python中多个装饰器的执行顺序详解
2018/10/08 Python
详解Python字典小结
2018/10/20 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
python面向对象 反射原理解析
2019/08/12 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
python使用itchat模块给心爱的人每天发天气预报
2019/11/25 Python
python 实现屏幕录制示例
2019/12/23 Python
python 等差数列末项计算方式
2020/05/03 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
一套带网友答案的.NET笔试题
2016/12/06 面试题
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
小学生春游活动方案
2014/08/20 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis