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


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变量的作用域和作用域链详解
Apr 02 Javascript
跟我学习javascript的undefined与null
Nov 17 Javascript
基于jquery实现的仿优酷图片轮播特效代码
Jan 13 Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 Javascript
JSON与js对象序列化实例详解
Mar 16 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
Vue 项目分环境打包的方法示例
Aug 03 Javascript
Vue中的vue-resource示例详解
Nov 02 Javascript
JS实现指定区域的全屏显示功能示例
Apr 25 Javascript
Node使用Nodemailer发送邮件的方法实现
Feb 24 Javascript
vscode中Vue别名路径提示的实现
Jul 31 Javascript
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
微信小程序实现自定义加载图标功能
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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
php 不同编码下的字符串长度区分
2009/09/26 PHP
PHP判断表达式中括号是否匹配的简单实例
2016/10/22 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
2018/04/30 PHP
Textarea根据内容自适应高度
2013/10/28 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
angular多语言配置详解
2019/05/16 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
详解Python中内置的NotImplemented类型的用法
2015/03/31 Python
Python实现方便使用的级联进度信息实例
2015/05/05 Python
python操作redis的方法
2015/07/07 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
对python字典过滤条件的实例详解
2019/01/22 Python
使用Python在Windows下获取USB PID&VID的方法
2019/07/02 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
小学毕业感言50字
2014/02/16 职场文书
村长贪污检举信
2014/04/04 职场文书
建设工程授权委托书
2014/09/22 职场文书
个人融资协议书
2014/10/02 职场文书
高中军训感想
2015/08/07 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python