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


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中eq和get的区别与使用方法
Apr 14 Javascript
Javascript高级技巧分享
Feb 25 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
Dec 16 Javascript
jquery淡入淡出效果简单实例
Jan 14 Javascript
深入理解js promise chain
May 05 Javascript
bootstrap table小案例
Oct 21 Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
webpack3+React 的配置全解
Aug 21 Javascript
深入浅析Vue全局组件与局部组件的区别
Jun 15 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
Sep 30 Javascript
Vue+Django项目部署详解
May 30 Javascript
浅谈JavaScript作用域
Dec 06 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
PHP读取配置文件类实例(可读取ini,yaml,xml等)
2015/07/28 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
小程序实现多列选择器
2019/02/15 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
js实现图片跟随鼠标移动效果
2019/10/16 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
Python迭代器定义与简单用法分析
2018/04/30 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
模范家庭事迹材料
2014/02/10 职场文书
服务承诺口号
2014/05/22 职场文书
新郎新娘答谢词
2015/01/04 职场文书
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers