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


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 相关文章推荐
Jquey拖拽控件Draggable使用方法(asp.net环境)
Sep 28 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
Sep 21 Javascript
原生js的弹出层且其内的窗口居中
May 14 Javascript
JavaScript实现随机替换图片的方法
Apr 16 Javascript
jquery实现浮动的侧栏实例
Jun 25 Javascript
jQuery实现移动端滑块拖动选择数字效果
Dec 24 Javascript
Angular的模块化(代码分享)
Dec 26 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
Feb 20 Javascript
微信扫码支付零云插件版实例详解
Apr 26 Javascript
Vue中添加手机验证码组件功能操作方法
Dec 07 Javascript
vue+element模态框中新增模态框和删除功能
Jun 11 Javascript
Vue实现多标签选择器
Nov 28 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 启动时报错的简单解决方法
2014/01/27 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
php实现加减法验证码代码
2014/02/14 PHP
php自定义错误处理用法实例
2015/03/20 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
js的一些常用方法小结
2011/06/29 Javascript
JavaScript中获取HTML元素值的三种方法
2016/06/20 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
vue 页面加载进度条组件实例
2018/02/05 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
Python中的列表知识点汇总
2015/04/14 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
opencv实现简单人脸识别
2021/02/19 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
python中rb含义理解
2020/06/18 Python
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
Gweniss格温妮丝女包官网:英国纯手工制造潮流包包品牌
2018/02/07 全球购物
简单说说tomcat的配置
2013/05/28 面试题
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
舞蹈兴趣小组活动总结
2014/07/07 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
北京导游词
2015/02/12 职场文书
同事打架检讨书
2015/05/06 职场文书
离职告别感言
2015/08/04 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python