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


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 相关文章推荐
从新浪弄下来的全屏广告代码 与使用说明
Mar 15 Javascript
比较详细的javascript对象的property和prototype是什么一种关系
Aug 06 Javascript
JavaScript 学习笔记(六)
Dec 31 Javascript
jQuery插件开发基础简单介绍
Jan 07 Javascript
parentElement,srcElement的使用小结
Jan 13 Javascript
js 事件截取enter按键页面提交事件示例代码
Mar 04 Javascript
jquery $.trim()方法使用介绍
May 21 Javascript
JavaScript的RequireJS库入门指南
Jul 01 Javascript
JavaScript实现select添加option
Jul 03 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
在element-ui的select下拉框加上滚动加载
Apr 18 Javascript
javascript解析json格式的数据方法详解
Aug 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
用ODBC的分页显示
2006/10/09 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
php中JSON的使用方法
2015/04/30 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
列表内容的选择
2006/06/30 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
对比分析Django的Q查询及AngularJS的Datatables分页插件
2017/02/07 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
vue3中轻松实现switch功能组件的全过程
2021/01/07 Vue.js
python实现telnet客户端的方法
2015/04/15 Python
pandas数据拼接的实现示例
2020/04/16 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
造价工程师个人求职信
2013/09/21 职场文书
魅力教师事迹材料
2014/01/10 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年材料员工作总结
2014/11/19 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL
pandas进行数据输入和输出的方法详解
2022/03/23 Python
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python