微信小程序实现分享到朋友圈功能


Posted in Javascript onJuly 19, 2018

截止到2017年11月18号,微信小程序官方还尚未开放直接分享到朋友圈的能力,但是劳动人民的智慧是伟大的,现在普遍的做法是,生成一张带有小程序码的图片,保存到用户相册,用户自行发布图片到朋友圈

我的套路:

  1. 请求后端API生成小程序码(生成小程序码需要access token,后端生成比较方便)
  2. canvas绘制文字和图片到画布
  3. 当用户点击分享到朋友圈时,给用户展示画布,画布转成图片,并将图片保存到相册
onShow: function () {
 var that = this;
 //1. 请求后端API生成小程序码
 that.getQr();

 //2. canvas绘制文字和图片
 const ctx = wx.createCanvasContext('myCanvas');
 var imgPath = '../../../image/intro.png'
 var bgImgPath = '../../../image/bgImgPath.png';
 ctx.drawImage(imgPath, 0, 0, 600, 520);

 ctx.setFillStyle('white')
 ctx.fillRect(0, 520, 600, 280);

 ctx.drawImage(imgPath, 30, 550, 60, 60);
 ctx.drawImage(bgImgPath, 30, 550, 60, 60);
 ctx.drawImage(imgPath, 410, 610, 160, 160);

 ctx.setFontSize(28)
 ctx.setFillStyle('#6F6F6F')
 ctx.fillText('妖妖灵', 110, 590)

 ctx.setFontSize(30)
 ctx.setFillStyle('#111111')
 ctx.fillText('宠友们快来围观萌宠靓照', 30, 660)
 ctx.fillText('我在萌爪幼稚园', 30, 700)

 ctx.setFontSize(24)
 ctx.fillText('长按扫码查看详情', 30, 770)
 ctx.draw()
 },
 // 3. canvas画布转成图片
 wx.canvasToTempFilePath({
 x: 0,
 y: 0,
 width: 600,
 height: 800,
 destWidth: 600,
 destHeight:800,
 canvasId: 'myCanvas',
 success: function(res) {
 console.log(res.tempFilePath);
 that.setData({
  shareImgSrc : res.tempFilePath
 })

 },
 fail:function (res) {
 console.log(res)
 }
 })
 //4. 当用户点击分享到朋友圈时,将图片保存到相册
 wx.saveImageToPhotosAlbum({
 filePath:that.data.shareImgSrc,
 success(res) {
 wx.showModal({
  title: '存图成功',
  content: '图片成功保存到相册了,去发圈噻~',
  showCancel:false,
  confirmText:'好哒',
  confirmColor:'#72B9C3',
  success: function(res) {
  if (res.confirm) {
  console.log('用户点击确定');
  }
  that.hideShareImg()
  }
 })
 }
})

canvas绘制单位为px,举个例子,屏幕宽375,绘制375的画布,保存的图片就是375px,图片像素度不够会糊掉,所以我改进了一下套路:

1.请求后端API生成小程序码(生成小程序码需要access token,后端生成比较方便)

2.canvas绘制文字和图片到画布
绘制2倍屏幕宽度的canvas画布,canvas画布必须是可见状态下,才可以被转成图片,可是他辣么大辣么丑肯定不能给用户看见,那就给他定位定个巨大的数字超出屏幕就好了

3.画布转成图片

4.当用户点击分享到朋友圈时,给用户展示图片,并将图片保存到相册

微信小程序实现分享到朋友圈功能

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery.Jwin.js 基于jquery的弹出层插件代码
May 23 Javascript
JavaScript动态插入script的基本思路及实现函数
Nov 11 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
Jun 25 Javascript
VC调用javascript的几种方法(推荐)
Aug 09 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
vue如何将v-for中的表格导出来
May 07 Javascript
Vue不能检测到Object/Array更新的情况的解决
Jun 26 Javascript
vue-router 源码实现前端路由的两种方式
Jul 02 Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 Javascript
vue router导航守卫(router.beforeEach())的使用详解
Apr 19 Javascript
vue中的mescroll搜索运用及各种填坑处理
Oct 30 Javascript
原生js无缝轮播插件使用详解
Mar 09 Javascript
微信小程序实现自定义加载图标功能
Jul 19 #Javascript
Angular5集成eventbus的示例代码
Jul 19 #Javascript
微信小程序实现弹出菜单
Jul 19 #Javascript
微信小程序实现之手势锁功能实例代码
Jul 19 #Javascript
React组件重构之嵌套+继承及高阶组件详解
Jul 19 #Javascript
微信小程序实现折叠展开效果
Jul 19 #Javascript
详解Angularjs 自定义指令中的数据绑定
Jul 19 #Javascript
You might like
windows下zendframework项目环境搭建(通过命令行配置)
2012/12/06 PHP
php筛选不存在的图片资源
2015/04/28 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
2016/03/21 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
禁止F5等快捷键的JS代码
2007/03/06 Javascript
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
2019/07/04 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
JavaScript arguments.callee作用及替换方案详解
2020/09/02 Javascript
Python+pandas计算数据相关系数的实例
2018/07/03 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
香港通票:Hong Kong Pass
2019/02/26 全球购物
《花的勇气》教后反思
2014/02/12 职场文书
元旦联欢会感言
2014/03/04 职场文书
骨干教师考核方案
2014/05/09 职场文书
安全生产月宣传标语
2014/10/06 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
2014年公司工作总结
2014/11/22 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang