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


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 相关文章推荐
JavaScript 仿关机效果的图片层
Dec 26 Javascript
js本身的局限性 别让javascript做太多事
Mar 23 Javascript
对js关键字命名的疑问介绍
Apr 25 Javascript
EasyUI中实现form表单提交的示例分享
Mar 01 Javascript
jQuery焦点图插件SaySlide
Dec 21 Javascript
JS实现简单易用的手机端浮动窗口显示效果
Sep 07 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
Dec 14 Javascript
Javacript中自定义的map.js  的方法
Nov 26 Javascript
node中modules.exports与exports导出的区别
Jun 08 Javascript
vue实现直播间点赞飘心效果的示例代码
Sep 20 Javascript
JavaScript中的惰性载入函数及优势
Feb 18 Javascript
Vue如何实现变量表达式选择器
Feb 18 Vue.js
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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
用PHP编程开发“虚拟域名”系统
2006/10/09 PHP
thinkPHP订单数字提醒功能的实现方法
2016/12/01 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
JS 树形递归实例代码
2010/05/18 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
jQuery学习笔记之2个小技巧
2015/01/19 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
解析JavaScript中的字符串类型与字符编码支持
2016/06/24 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
python搜索算法原理及实例讲解
2020/11/18 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
Javascript如何发送一个Ajax请求
2015/01/26 面试题
《青山处处埋忠骨》教学反思
2014/04/22 职场文书
大学国际贸易专业自荐信
2014/06/05 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
导游词之太湖
2019/10/08 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python