微信小程序之通过Canvas生成图片保存到手机相册
需求描述:
电商项目中有很多需要分享邀请的海报页面,需要带上自己的小程序码,并且保存在本地,然后分享到朋友圈。
解决方法:
将海报通过wx.createCanvasContext绘制到画布canvas组件。
使用canvasToTempFilePath将canvas海报保存到本地临时文件路径。
使用savelmageToPhotosAlbum将图片保存到本地相册。
定义海报内容图片
data: {isGetSet: true,poster_bg: '/images/invite_poster_bg.png',poster_qrcode: '/images/invite_poster_qrcode.png'
},
将海报通过wx.createCanvasContext绘制到画布canvas组件。
1.在wxml中添加canvas组件 。
<canvas class='canvas-poster' canvas-id='canvasposter'></canvas>
2.绘制海报内容
drawPoster: function() {if(drawing){wx.showToast({title: '绘制中……',icon: 'loading',duration: 3000}) }else{drawing = true;// loading console.log('进入绘制')var ctx = wx.createCanvasContext('canvasposter');// ctx.clearRect(0, 0, 280, 450);/* 绘制背景*/ctx.rect(0, 0, 730, 1300);ctx.setFillStyle('black');ctx.fillRect(0, 0, 730, 1300);/*绘制产品图*/ctx.drawImage(this.data.poster_bg, 0, 0, 730, 1300);/*绘制二维码*/ctx.drawImage(this.data.poster_qrcode, 265, 725, 200, 200);ctx.restore();ctx.draw(false, this.getTempFilePath);}},
使用canvasToTemprilePath将canvas海报保存到本地临时文件路径;
getTempFilePath: function() {wx.canvasToTempFilePath({canvasId: 'canvasposter',success: (res) => {this.saveImageToPhotosAlbum(res.tempFilePath)}})
},
使用savelmageToPhotosAlbum将图片保存到本地相册
saveImageToPhotosAlbum: function(imgUrl) {if (imgUrl) { wx.saveImageToPhotosAlbum({filePath: imgUrl,success: (res) => {console.log(res)wx.showToast({title: '保存成功',icon: 'success',duration: 3000})drawing = false},fail: (err) => {console.log(err)wx.showToast({title: '保存失败',icon: 'error',duration: 3000})drawing = false}})} else {wx.showToast({title: '绘制中……',icon: 'loading',duration: 3000})}
},
点击按钮保存海报到手机相册(判断是否获取相册授权,已获得权限直接绘制,若未获得权限,重新生成一个按钮点击需要用户重新授权)
saveImageToPhotos: function(e) {let that = this// 相册授权wx.getSetting({success(res) {// 进行授权检测,未授权则进行弹层授权console.log(res.authSetting)if (!res.authSetting['scope.writePhotosAlbum']) {wx.authorize({scope: 'scope.writePhotosAlbum',success () {that.drawPoster();that.setData({isGetSet: true})},// 拒绝授权时,在下载按钮上面增加打开手机设置按钮fail() {console.log('拒绝授权')that.setData({isGetSet: false})}})} else {// 已授权则直接进行保存图片that.setData({isGetSet: true})that.drawPoster();}},fail(res) {console.log(res);}})
},
到此,一个动态生成带有小程序码的海报下载流程就完成了。
完整案例
微信小程序之通过Canvas生成图片保存到手机相册相关推荐
- 微信小程序将base64图片格式保存至手机相册
// 保存图片 let settingWritePhotosAlbum = false; export const saveImg = function(url, callback ) {//获取文件 ...
- 微信小程序:使用canvas 生成图片 并分享
废话不多说直接上代码!!!! html <canvas canvas-id="positionPoster" style="width: 414px; height ...
- 微信小程序 下载图片或视频保存到手机系统相册
//downloadSaveFile.js/*** 下载单个文件* @param {string} [type]* @param {string} url* @callback successCall ...
- 【微信小程序】将base64图片保存至本地
需求描述 微信小程序中,下载一个报告文件,直接可获取到的是报告图片的base64格式. 参考文章 1.微信小程序实现图片下载功能 2.微信小程序把base64的图片保存到手机相册 代码实现 1.wxm ...
- 微信小程序之用canvas给微信头像加小红旗(canvas无法使用网络资源绘画)
微信小程序之使用canvas给微信头像加小红旗 情境:新中国成立70周年,普天同庆.昨天看到朋友圈中被刷屏的@官方微信 给自己的头像加小红旗.服务器被卡爆,很多朋友说换头像不成功. 任务:打算自己写一 ...
- 在H5、微信小程序中使用canvas绘制二维码、分享海报
在H5.微信小程序中使用canvas绘制二维码.分享海报 文章目录 在H5.微信小程序中使用canvas绘制二维码.分享海报 前言 一.canvas绘制二维码 1.H5中使用canvas 2.微信小程 ...
- 微信小程序 获取用户信息并保存登录状态
微信小程序 获取用户信息并保存登录状态:http://www.360doc.com/content/18/0124/11/9200790_724662071.shtml 转载于:https://www ...
- 微信小程序---判断苹果11及以上型号手机
微信小程序-判断苹果11及以上型号手机 在app,js全局中 onLaunch: function () {var t = this;wx.getSystemInfo({success: functi ...
- 微信小程序,使用canvas画图生成海报并保存手机相册
需求:需要根据背景图片和用户的微信的头像和昵称,生成一张海报图,并保存到手机相册. 首先在画布上绘制海报背景图片,然后再绘制头像.昵称和挑战成功的信息. 代码如下: getImageInfo() {r ...
最新文章
- jsessionid和jwt_JWT与Session的比较
- qt中label双击_qt关于QLabel控件的实现双击调用文件对话框
- 梯度下降法原理及实现
- 操作系统(二)操作系统的四个特征
- 删除文件夹下所有的文件_VB删除文件和文件夹的方法
- 天才基本法_《天才基本法》强推!年度神仙小说,看完这本书我竟然爱上了数学...
- 用 Kaggle 经典案例教你用 CNN 做图像分类!
- linux 查询 lib信息,linux系统信息常用查询命令
- jsp标签使用技巧整理
- mybatis中concat的用法
- python 面向对象oop
- SSM项目实战之一:项目创建
- 2021-11-19 工作记录--apiCloud-YDUI下拉框
- 3dmax打开错误html,Windows安装3dmax软件失败提示错误三种解决办法
- 如何解决百度识图中图片被限制百度防盗链破解方法
- 闲鱼前端组件库的建设
- 看懂卫星遥感数据RPC文件
- 芯片短缺:今年圣诞节PS5货量恐不足
- uniapp框架如何实现仿微信相册插件 | 图视频编辑 + 压缩
- 浅谈provide与inject
热门文章
- 五金手册在线查询_带剔除在线分选秤 零食袋装称重剔除秤-技术文章
- C语言中三块“难啃的硬骨头”
- 一块电路板从“出生”到“成年”
- Linux下make使用gcc编译,Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)
- 怎么用计算机截图快捷键,电脑怎么截图截屏 电脑截图的快捷键是什么
- 用友t3服务器文件丢失,用友T3软件在T3用友通标准版恢复账套时在备份的文件中找不到要恢复的文件,如何解决?-用友T3...
- spring配置主库从库_spring下的数据库主从分离(下)
- 安徽工业大学计算机学院推免名单,2021年安徽工业大学拟录取推免研究生名单公示...
- php面向接口编程思想,面向接口编程 - Laravel 实践
- 利用GBDT模型构造新特征具体方法