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


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 相关文章推荐
一个可复用的vue分页组件
May 15 Javascript
React服务端渲染(总结)
Jul 01 Javascript
浅谈angular4实际项目搭建总结
Dec 01 Javascript
解决easyui日期时间框ie的兼容的问题
Mar 01 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
May 08 Javascript
socket io与vue-cli的结合使用的示例代码
Nov 01 Javascript
node 解析图片二维码的内容代码实例
Sep 11 Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 Javascript
Js实现复选框的全选、全不选反选功能代码实例
Feb 28 Javascript
JavaScript实现简单日历效果
Sep 11 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
Oct 29 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
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
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
Angular ng-repeat 对象和数组遍历实例
2016/09/14 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
ant design实现圈选功能
2019/12/17 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
在Python中使用模块的教程
2015/04/27 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
Python urlopen()参数代码示例解析
2020/12/10 Python
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
后勤自我鉴定
2013/10/13 职场文书
逃课上网检讨书
2014/02/20 职场文书
机工车间主任岗位职责
2014/03/05 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
教师学习心得体会范文
2016/01/21 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang
win10输入法不见了只能打出字母怎么解决?
2022/08/05 数码科技