微信小程序实现分享商品海报功能


Posted in Javascript onSeptember 30, 2019

我们在微信小程序中经常会使用到分享商品海报,或者是重绘微信小程序分享链的图片功能。实现该功能只要跟着如下几个步骤就可以快速实现啦!(本文示例代码使用的是uni-app,原生或者其他框架需要将uni前缀该成对应框架前缀即可;)

步骤描述不清晰或者不想看步骤?那就直接访问完整代码地址吧

完整代码演示:微信小程序 - 分享商品海报

相关文档:

uni-app官方文档
微信小程序官方文档

第一步:提前将需要分享的图片素材先缓存至本地临时图片路径;

initPic(){
 this.handleNetImg('网络图片地址').then((res)=>{
 this.bgdSrc =res.path;//保存这个临时图片路径
 }
}
//生成临时图片
handleNetImg(imagePath) {
 return new Promise((resolve, reject) => {
 uni.getImageInfo({
 src: imagePath,
 success: function (res) {
 resolve(res);
 }
 });
 });
},

第二步:加入分享按钮以及Canvas元素;

<button open-type="share">点击分享</button>
<button @click="getPhotosAlbumAuth">保存本地</button>
<view class="canvas-box">
 <canvas canvas-id='mycanvas'></canvas>
</view>

第三步:初始Canvas,将内容画到Canvas上,画完后将画布生成临时图片;

createShareGoods(){
 uni.showLoading({
 title:'正在生成中...'
 })
 var ctx = uni.createCanvasContext('mycanvas', this);
 ctx.drawImage(this.bgdSrc, 0, 0, 300, 240); //画背景图
 ctx.drawImage(this.itemPic, 0, 0, 400, 400, 30, 45, 140, 140);//画商品图片
 ctx.drawImage(this.qrcode, 0, 0, 400, 400, 225, 5, 100, 100);//画二维码,这边可以变成小程序码
 //现价
 ctx.setFillStyle('#E80013');
 ctx.setFontSize(18);
 ctx.fillText('这边可以写一些说明之类的', 180, 100);
 ctx.setFillStyle('#E80013');
 ctx.setFontSize(18);
 ctx.fillText('这边可以写一些说明之类的', 100, 100);
 //开始画画完后生成新的临时图片地址
 ctx.draw(false, () => {
 setTimeout(()=>{
 uni.canvasToTempFilePath({
 canvasId: 'mycanvas',
 success: (res) => {
 uni.hideLoading();
 this.picTempUrl=res.tempFilePath;
 }
 });
 }, 300);
 })
},

第四步:点击分享按钮,完成分享;

/**
 * 分享页面到微信好友
 */
onShareAppMessage(){
 return {
 title: '限时特卖:'+this.name,
 path: 'pages/index/index?data=这边可以传一些ID啥的',
 imageUrl: this.picTempUrl
 }
},

第五步:保存到本地(获取权限后保存);

//获取手机相册权限
getPhotosAlbumAuth(){
 uni.getSetting({
 success:(res)=> {
 if (!res.authSetting['scope.writePhotosAlbum']) {
 uni.authorize({
 scope: 'scope.writePhotosAlbum',
 success:()=> {
 this.saveImage();
 }
 })
 } else {
 this.saveImage();
 }
 }
 })
},
//保存海报
saveImage(){
 uni.saveImageToPhotosAlbum({
 filePath: this.picTempUrl,
 success: (data)=> {
 uni.showToast({
 title: "图片保存成功",
 icon: "success",
 mask: true
 })
 },
 complete: () => {
 this.posterStatus=false;
 }
 })
},

为大家推荐现在关注度比较高的微信小程序教程一篇:《微信小程序开发教程》小编为大家精心整理的,希望喜欢。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
自己动手写的jquery分页控件(非常简单实用)
Oct 28 Javascript
js简单时间比较的方法
Aug 02 Javascript
BootStrap中Datepicker控件带中文的js文件
Aug 10 Javascript
详解Jquery Easyui的验证扩展
Jan 09 Javascript
jQuery.Form上传文件操作
Feb 05 Javascript
jQuery插件实现弹性运动完整示例
Jul 07 jQuery
微信小程序form表单组件示例代码
Jul 15 Javascript
Vue自定义指令写法与个人理解
Feb 09 Javascript
vue组件化中slot的基本使用方法
May 01 Javascript
layui按条件隐藏表格列的实例
Sep 19 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 Javascript
使用vuex存储用户信息到localStorage的实例
Nov 11 Javascript
Bootstrap实现模态框效果
Sep 30 #Javascript
HTML+JavaScript实现扫雷小游戏
Sep 30 #Javascript
React+Redux实现简单的待办事项列表ToDoList
Sep 29 #Javascript
JS回调函数简单易懂的入门实例分析
Sep 29 #Javascript
在vue中根据光标的显示与消失实现下拉列表
Sep 29 #Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 #Javascript
微信小程序 行的删除和增加操作实现详解
Sep 29 #Javascript
You might like
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
MySQL授权问题总结
2007/05/06 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
php获取文件大小的方法
2014/02/26 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
SVG描边动画
2017/02/23 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
详解Python中的__new__()方法的使用
2015/04/09 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
django框架两个使用模板实例
2019/12/11 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
迎接领导欢迎词
2014/01/11 职场文书
应届护士求职信范文
2014/01/26 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
班主任工作经验交流材料
2014/05/13 职场文书
2014年师德承诺书
2014/05/23 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
2015年营销工作总结范文
2015/04/23 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python