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


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 相关文章推荐
JS控制文本框textarea输入字数限制的方法
Jun 17 Javascript
jQuery类选择器用法实例
Dec 23 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
May 16 Javascript
jQuery插件uploadify实现ajax效果的图片上传
Jun 18 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
Apr 06 Javascript
JavaScript设置名字输入不合法的实现方法
May 23 Javascript
JS中定位 position 的使用实例代码
Aug 06 Javascript
JS中关于正则的巧妙操作
Aug 31 Javascript
bootstrap Table服务端处理分页(后台是.net)
Oct 19 Javascript
Vue axios 将传递的json数据转为form data的例子
Oct 29 Javascript
es6函数之rest参数用法实例分析
Apr 18 Javascript
vue实现的多页面项目如何优化打包的步骤详解
Jul 19 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
php 计划任务 检测用户连接状态
2012/03/29 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
javascript 简练的几个函数
2009/08/29 Javascript
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
react redux入门示例
2018/04/19 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
python虚拟环境的安装配置图文教程
2017/10/20 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
农药学硕士毕业生自荐信
2013/09/25 职场文书
保护环境建议书300字
2014/05/13 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
团代会邀请函
2015/02/02 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL
Python使用永中文档转换服务
2022/05/06 Python