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


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 相关文章推荐
js 中 document.createEvent的用法
Aug 29 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
Mar 01 Javascript
javascript ie6兼容position:fixed实现思路
Apr 01 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
Feb 02 Javascript
Javascript的表单验证-揭开正则表达式的面纱
Mar 18 Javascript
JavaScript实现通过select标签跳转网页的方法
Sep 29 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
easy ui datagrid 从编辑框中获取值的方法
Feb 22 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
Aug 23 jQuery
Vue组件库发布到npm详解
Feb 17 Javascript
vue基础之模板和过滤器用法实例分析
Mar 12 Javascript
使用JS来动态操作css的几种方法
Dec 18 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
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
2021/01/25 Javascript
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
python从入门到精通(DAY 3)
2015/12/20 Python
打包发布Python模块的方法详解
2016/09/18 Python
Python实现的质因式分解算法示例
2018/05/03 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
Django框架 查询Extra功能实现解析
2019/09/04 Python
Pytorch之parameters的使用
2019/12/31 Python
Python ellipsis 的用法详解
2020/11/20 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
Book Depository美国:全球领先的专业网上书店之一
2019/08/14 全球购物
汽车队司机先进事迹材料
2014/02/01 职场文书
团委竞选演讲稿
2014/04/24 职场文书
小学校本培训方案
2014/06/06 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
红白喜事主持词
2015/07/06 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
Docker官方工具docker-registry案例演示
2022/04/13 Servers