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


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 相关文章推荐
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
JS 去前后空格大全(IE9亲测)
Jul 15 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
May 13 Javascript
Bootstrap项目实战之子栏目资讯内容
Apr 25 Javascript
详解Node.js中的事件机制
Sep 22 Javascript
JS实现重新加载当前页面或者父页面的几种方法
Nov 30 Javascript
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
小程序清理本地缓存的方法
Aug 17 Javascript
JavaScript常用工具方法封装
Feb 12 Javascript
vue生命周期与钩子函数简单示例
Mar 13 Javascript
js实现小时钟效果
Mar 25 Javascript
JQuery绑定事件四种实现方法解析
Dec 02 jQuery
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
星际争霸中的对战模式介绍
2020/03/04 星际争霸
一个程序下载的管理程序(一)
2006/10/09 PHP
一个ubbcode的函数,速度很快.
2006/10/09 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
PHP中Array相关函数简介
2016/07/03 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
JavaScript类库D
2010/10/24 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
JavaScript组合设计模式--改进引入案例分析
2020/05/23 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
python修改txt文件中的某一项方法
2018/12/29 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
opencv实现简单人脸识别
2021/02/19 Python
python如何变换环境
2020/07/21 Python
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
农村党支部先进事迹
2014/01/14 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
财产保全担保书范文
2014/04/01 职场文书
小学德育工作总结2015
2015/05/12 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript