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


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 removeChild 障眼法 可能出现的错误
Oct 06 Javascript
fancybox modal的完美解决(右上的X)
Oct 30 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 Javascript
javascript实现倒计时跳转页面
Jan 17 Javascript
JS访问DOM节点方法详解
Nov 29 Javascript
jquery——九宫格大转盘抽奖实例
Jan 16 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
Jul 03 Javascript
Angular4 ElementRef的应用
Feb 26 Javascript
浅谈在react中如何实现扫码枪输入
Jul 04 Javascript
详解微信小程序之scroll-view的flex布局问题
Jan 16 Javascript
React组件设计模式之组合组件应用实例分析
Apr 29 Javascript
vue实现购物车案例
May 30 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 session有效期问题
2009/04/26 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
php pdo操作数据库示例
2017/03/10 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
python实现验证码识别功能
2018/06/07 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
python实现简单的购物程序代码实例
2020/03/03 Python
django在开发中取消外键约束的实现
2020/05/20 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
怎么快速自学python
2020/06/22 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
财务主管自我鉴定
2014/01/17 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
教师聘用意向书
2015/05/11 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
公司联欢会主持词
2015/07/04 职场文书
mysql查询结果实现多列拼接查询
2022/04/03 MySQL