需求描述:

电商项目中有很多需要分享邀请的海报页面,需要带上自己的小程序码,并且保存在本地,然后分享到朋友圈。

解决方法:

将海报通过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生成图片保存到手机相册相关推荐

  1. 微信小程序将base64图片格式保存至手机相册

    // 保存图片 let settingWritePhotosAlbum = false; export const saveImg = function(url, callback ) {//获取文件 ...

  2. 微信小程序:使用canvas 生成图片 并分享

    废话不多说直接上代码!!!! html <canvas canvas-id="positionPoster" style="width: 414px; height ...

  3. 微信小程序 下载图片或视频保存到手机系统相册

    //downloadSaveFile.js/*** 下载单个文件* @param {string} [type]* @param {string} url* @callback successCall ...

  4. 【微信小程序】将base64图片保存至本地

    需求描述 微信小程序中,下载一个报告文件,直接可获取到的是报告图片的base64格式. 参考文章 1.微信小程序实现图片下载功能 2.微信小程序把base64的图片保存到手机相册 代码实现 1.wxm ...

  5. 微信小程序之用canvas给微信头像加小红旗(canvas无法使用网络资源绘画)

    微信小程序之使用canvas给微信头像加小红旗 情境:新中国成立70周年,普天同庆.昨天看到朋友圈中被刷屏的@官方微信 给自己的头像加小红旗.服务器被卡爆,很多朋友说换头像不成功. 任务:打算自己写一 ...

  6. 在H5、微信小程序中使用canvas绘制二维码、分享海报

    在H5.微信小程序中使用canvas绘制二维码.分享海报 文章目录 在H5.微信小程序中使用canvas绘制二维码.分享海报 前言 一.canvas绘制二维码 1.H5中使用canvas 2.微信小程 ...

  7. 微信小程序 获取用户信息并保存登录状态

    微信小程序 获取用户信息并保存登录状态:http://www.360doc.com/content/18/0124/11/9200790_724662071.shtml 转载于:https://www ...

  8. 微信小程序---判断苹果11及以上型号手机

    微信小程序-判断苹果11及以上型号手机 在app,js全局中 onLaunch: function () {var t = this;wx.getSystemInfo({success: functi ...

  9. 微信小程序,使用canvas画图生成海报并保存手机相册

    需求:需要根据背景图片和用户的微信的头像和昵称,生成一张海报图,并保存到手机相册. 首先在画布上绘制海报背景图片,然后再绘制头像.昵称和挑战成功的信息. 代码如下: getImageInfo() {r ...

最新文章

  1. jsessionid和jwt_JWT与Session的比较
  2. qt中label双击_qt关于QLabel控件的实现双击调用文件对话框
  3. 梯度下降法原理及实现
  4. 操作系统(二)操作系统的四个特征
  5. 删除文件夹下所有的文件_VB删除文件和文件夹的方法
  6. 天才基本法_《天才基本法》强推!年度神仙小说,看完这本书我竟然爱上了数学...
  7. 用 Kaggle 经典案例教你用 CNN 做图像分类!
  8. linux 查询 lib信息,linux系统信息常用查询命令
  9. jsp标签使用技巧整理
  10. mybatis中concat的用法
  11. python 面向对象oop
  12. SSM项目实战之一:项目创建
  13. 2021-11-19 工作记录--apiCloud-YDUI下拉框
  14. 3dmax打开错误html,Windows安装3dmax软件失败提示错误三种解决办法
  15. 如何解决百度识图中图片被限制百度防盗链破解方法
  16. 闲鱼前端组件库的建设
  17. 看懂卫星遥感数据RPC文件
  18. 芯片短缺:今年圣诞节PS5货量恐不足
  19. uniapp框架如何实现仿微信相册插件 | 图视频编辑 + 压缩
  20. 浅谈provide与inject

热门文章

  1. 五金手册在线查询_带剔除在线分选秤 零食袋装称重剔除秤-技术文章
  2. C语言中三块“难啃的硬骨头”
  3. 一块电路板从“出生”到“成年”
  4. Linux下make使用gcc编译,Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)
  5. 怎么用计算机截图快捷键,电脑怎么截图截屏 电脑截图的快捷键是什么
  6. 用友t3服务器文件丢失,用友T3软件在T3用友通标准版恢复账套时在备份的文件中找不到要恢复的文件,如何解决?-用友T3...
  7. spring配置主库从库_spring下的数据库主从分离(下)
  8. 安徽工业大学计算机学院推免名单,2021年安徽工业大学拟录取推免研究生名单公示...
  9. php面向接口编程思想,面向接口编程 - Laravel 实践
  10. 利用GBDT模型构造新特征具体方法