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


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 相关文章推荐
JavaScript实际应用:innerHTMl和确认提示的使用
Jun 22 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
Dec 06 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
Apr 17 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
May 09 Javascript
js创建数组的简单方法
Jul 27 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
Dec 28 Javascript
JavaScript中利用for循环遍历数组
Jan 15 Javascript
浅谈Vue组件及组件的注册方法
Aug 24 Javascript
js正则取值的结果数组调试方法
Oct 10 Javascript
如何用JavaScript学习算法复杂度
Apr 30 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
php自动注册登录验证机制实现代码
2011/12/20 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
php swoft框架实例用法
2020/12/22 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
Mac 上切换Python多版本
2017/06/17 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
餐饮管理自我介绍信
2014/01/15 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
欠款起诉书范文
2015/05/19 职场文书
小学思想品德教学反思
2016/02/24 职场文书
python 多态 协议 鸭子类型详解
2021/11/27 Python