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


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 相关文章推荐
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
Sep 14 Javascript
return false,对阻止事件默认动作的一些测试代码
Nov 17 Javascript
简短几句jquery代码的实现一个图片向上滚动切换
Sep 02 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
Feb 23 Javascript
Javascript基础教程之函数对象和属性
Jan 18 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
May 24 Javascript
AngularJS过滤器filter用法总结
Dec 13 Javascript
树结构之JavaScript
Jan 24 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
Mar 15 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
vue项目中使用bpmn-自定义platter的示例代码
May 11 Javascript
JavaScript获取URL参数的方法分享
Apr 07 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实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
Laravel5.* 打印出执行的sql语句的方法
2017/07/24 PHP
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
原生JS实现前端本地文件上传
2018/09/08 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
谈谈JavaScript中的垃圾回收机制
2020/09/17 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
Python字符串替换实例分析
2015/05/11 Python
Python写入CSV文件的方法
2015/07/08 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
Python中@property的理解和使用示例
2019/06/11 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
企业治理工作自我评价
2013/09/26 职场文书
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
如何写你的创业计划书
2014/01/07 职场文书
分层教学实施方案
2014/03/19 职场文书
支部书记四风对照材料
2014/08/28 职场文书
长城英文导游词
2015/01/30 职场文书
初中美术教学反思
2016/02/17 职场文书
六年级情感作文之500字
2019/10/23 职场文书