微信小程序如何使用canvas二维码保存至手机相册


Posted in Javascript onJuly 15, 2019

前言

在使用canvas绘制海报的过程中不建议使用原生来进行画图,因为默认是不支持rpx像素的,px不会做到自适应。

推荐使用插件 Painter

github地址

github.com/Kujiale-Mob (本地下载)…

配置很简单,也容易上手,无论是画矩形,还是将图片合成canvas;还是自己定义文字;都是很方便的。

附上一个简单的例子吧

微信小程序如何使用canvas二维码保存至手机相册

<painter :customStyle="customStyle" :palette="imgDraw" />
//
 const _this=this;
   wx.getSystemInfo({
    success (res) {
     _this.drawCanvas(res.windowHeight);
    }
   })
	 
drawCanvas(height) {
//这里的canvas的高是动态获取设备的高度,做到自适应
    const that = this;
   let heightVal=height*2+'rpx';
   this.imgDraw = {
    width: '750rpx',
    height: heightVal,
    background: '#fff',
    views: [
     {
      type: "rect",
      css: {
       top: '20rpx',
       left: '130rpx',
       color: '#1A1A1A',
       width: '660rpx',
       height: '220rpx',
       borderRadius: '32rpx'
      }
     },
     {
      type: 'image',
      url: './a.jpg',
      css: {
       top: '36rpx',
       left: '16rpx',
       width: '188rpx',
       height: '188rpx'
      }
     },
     {
      type: 'text',
      text: '',
      css: {
       top: '54rpx',
       left: '260rpx',
       fontSize: '48rpx',
       color: "#fff"
      }
     },
     {
      type: 'text',
      text: '文字部分',
      css: {
       top: '134rpx',
       left: '260rpx',
       fontSize: '30rpx',
       color: "#d1d1d1"
      }
     },
     {
      type: 'text',
      text: '1333333333',
      css: {
       top: '196rpx',
       left: '260rpx',
       fontSize: '26rpx',
       color: "#d1d1d1"
      }
     },
     {
      type: 'text',
      text: '李四',
      css: {
       top: '304rpx',
       left: '302rpx',
       fontSize: '24rpx',
       color: "#767676"
      }
     },
     {
      type: 'image',
      url: '/icon-localtion.png',
      css: {
       top: '275rpx',
       left: '260rpx',
       width: '26rpx',
       height: '168rpx'
      }
     },
     {
      type: 'image',
      url: '二维码.png',
      css: {
       top: '646rpx',
       left: '236rpx',
       width: '278rpx',
       height: '278rpx'
      }
     }
    ]
   }

  
   let { path: __path } = mpvue.getStorageSync('createImagePath')
   mpvue.saveImageToPhotosAlbum({
    filePath: __path,
    success(res) {
     // mpvue.showToast({
     //  title: '保存成功',
     //  icon: 'success',
     //  duration: 800,
     //  mask: true
     // });
   
    },
    fail(res) {
     // mpvue.showToast({
     //  title: '保存失败',
     //  icon: 'fail',
     //  duration: 800,
     //  mask: true
     // });
    }
   });
  },

这里涉及到画二维码, 如果你的二维码图片不是一个线上的链接的话,这时需要做一些小操作。

我的项目中二维码的图片传过来是一个流,所以用img的src默认发送get请求,就能拿到这个图片了。

所以url会直接发送get请求拿到图片。

canvas的层级

canvas的层级是最高的,底部的分享块会被遮住,这时你需要用两套方案,一个是纯展示用的,用正常的html来写,给用户看这个名片。

下载或分享的时候再y用canvas生产你想要图片,接着调用微信的保存api,将图片下载或分享。

let { path: __path } = mpvue.getStorageSync('createImagePath')
mpvue.saveImageToPhotosAlbum({
 filePath: __path,
 success(res) {
  // mpvue.showToast({
  //  title: '保存成功',
  //  icon: 'success',
  //  duration: 800,
  //  mask: true
  // });

 },
 fail(res) {
  // mpvue.showToast({
  //  title: '保存失败',
  //  icon: 'fail',
  //  duration: 800,
  //  mask: true
  // });
 }
});

此时就能顺利完成保存名片的功能了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JScript内置对象Array中元素的删除方法
Mar 08 Javascript
Prototype ObjectRange对象学习
Jul 19 Javascript
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
JS获取鼠标坐标的实例方法
Jul 18 Javascript
jquery toolbar与网页浮动工具条具体实现代码
Jan 12 Javascript
浅谈JS中逗号运算符的用法
Jun 12 Javascript
js实现适合新闻类图片的轮播效果
Feb 05 Javascript
原生js实现轮播图
Feb 27 Javascript
微信网页登录逻辑与实现方法
Apr 29 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
Jun 04 jQuery
JavaScript实现模态对话框实例
Jan 13 Javascript
JS Canvas接口和动画效果大全
Apr 29 Javascript
如何给element添加一个抽屉组件的方法步骤
Jul 14 #Javascript
详解vuex的简单todolist例子
Jul 14 #Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
Jul 13 #Javascript
微信小程序解析富文本过程详解
Jul 13 #Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
Jul 13 #Javascript
微信小程序Echarts覆盖正常组件问题解决
Jul 13 #Javascript
微信小程序图片左右摆动效果详解
Jul 13 #Javascript
You might like
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
python判断字符串是否包含子字符串的方法
2015/03/24 Python
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
python3去掉string中的标点符号方法
2019/01/22 Python
python try 异常处理(史上最全)
2019/03/07 Python
python进程和线程用法知识点总结
2019/05/28 Python
python批量图片处理简单示例
2019/08/06 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
Python如何测试stdout输出
2020/08/10 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
高中毕业自我鉴定范文
2013/10/02 职场文书
档案接收函范文
2014/01/10 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
说明书范文
2014/05/07 职场文书
公司员工安全协议书
2014/11/21 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
java项目构建Gradle的使用教程
2022/03/24 Java/Android
Python加密技术之RSA加密解密的实现
2022/04/08 Python