微信小程序实现分享朋友圈的图片功能示例


Posted in Javascript onJanuary 18, 2019

本文实例讲述了微信小程序实现分享朋友圈的图片功能。分享给大家供大家参考,具体如下:

由于微信小程序只支持分享给朋友或者群,不支持分享到朋友圈,又有分享到朋友圈这个需求,那就要想办法实现这个需求。查阅各种资料,发现基本思路有两种,一种是后端实现,另一种是前端实现,后端实现的方式这里就不讨论了,因为我是不懂后端的,只会前端的东西,所以这里就记录一下前端的实现方法。

前端要实现分享到朋友群,都是通过canvas做一张图片,然后用户手动分享朋友圈。前端具体要做的就是把要分享的页面用canvas重做一遍,生成一个图片,保存这个图片到用户本地相册。

要想用canvas,需要在页面上使用canvas标签,把它定位到页面之外,以免影响页面,在绘制图片时,图片的地址必须是通过微信下载图片后返回的虚拟地址,要不canvas无法绘制出来,接下来最主要的就是canvas的使用了,小程序的canvas和h5的canvas一样,并没有多大的区别。

下面是一个例子:

首先是在页面上创建canvas

index.wxml

<view class="canvas-box">
    <canvas canvas-id="myCanvas" style="width:100%;height:{{windowHeight}}px;"></canvas>
</view>
<button bindtap='startDraw'>分享朋友圈</button>

写一个样式把canvas定位到页面之外,以免影响页面的效果

.canvas-box{
  width: 100%;
  position: fixed;
  left: 0;
  top: 999999rpx;
}

接下来就是绘图了,具体可以参考绘图文档

startDraw:function(){
 const ctx = wx.createCanvasContext('myCanvas');
  let windowWidth = wx.getSystemInfoSync().windowWidth;
  let windowHeight = wx.getSystemInfoSync().windowHeight;
  let _this=this;
  this.setData({
   scale: 1.6
  });
  ctx.setFillStyle('#333');
  ctx.fillRect(0, 0, windowWidth, 100);
  ctx.setFontSize(20);
  ctx.setFillStyle('#fff');
  ctx.fillText('开始绘制图片', 30, 50);
  ctx.setFillStyle('#FFF');
  ctx.fillRect(0, 70, windowWidth, 600);
  ctx.setFillStyle('#666');
  ctx.setFontSize(19);
  ctx.fillText('我是标题',100, 140);
  ctx.setFontSize(20);
  ctx.fillText('微信小程序文本部分',20 , 170);
  ctx.draw()
}

到这为止,canvas绘图是做完了,现在要把canvas绘制的图形转化为图片,调用微信小程序已有的接口,接上面方法内:

wx.canvasToTempFilePath({
   x: 0,
   y: 0,
   width: windowWidth,
   height: windowHeight,
   destWidth: windowWidth,
   destHeight: windowHeight,
   canvasId: 'myCanvas',
   success: function (res1) {
    console.log('朋友圈分享图生成成功:' + res1.tempFilePath);
   }
});

这样就完成了分享图片的制作。

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
DWR Ext 加载数据
Mar 22 Javascript
jQuery UI的Dialog无法提交问题的解决方法
Jan 11 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
Oct 11 Javascript
js操作输入框提示信息且响应鼠标事件
Mar 25 Javascript
20个实用的JavaScript技巧分享
Nov 28 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
Jan 22 Javascript
JavaScript 函数模式详解及示例
Sep 07 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
Mar 06 Javascript
微信小程序 request接口的封装实例代码
Apr 26 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
May 09 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
Jul 22 jQuery
node.js监听文件变化的实现方法
Apr 17 Javascript
vue-cli3 karma单元测试的实现
Jan 18 #Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
Jan 18 #Javascript
如何解决.vue文件url引用文件的问题
Jan 18 #Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
Jan 18 #jQuery
vue.js实现的幻灯片功能示例
Jan 18 #Javascript
vue ssr 实现方式(学习笔记)
Jan 18 #Javascript
JS实现的贪吃蛇游戏完整实例
Jan 18 #Javascript
You might like
从手册去理解分析PHP session机制
2011/07/17 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
javascript json2 使用方法
2010/03/16 Javascript
javascript使用activex控件的代码
2011/01/27 Javascript
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
2016/09/15 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
JDK安装目录下有哪些内容
2014/08/25 面试题
自荐书模板
2013/12/15 职场文书
电焊工岗位职责
2014/03/06 职场文书
中学校庆方案
2014/03/17 职场文书
最常使用的求职信
2014/05/25 职场文书
置业顾问岗位职责
2015/02/09 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
七年级生物教学反思
2016/02/20 职场文书
股东协议书范本2016
2016/03/21 职场文书
详解Python生成器和基于生成器的协程
2021/06/03 Python