微信小程序如何使用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 相关文章推荐
网络之美 JavaScript中Get和Set访问器的实现代码
Sep 19 Javascript
jQuery实用基础超详细介绍
Apr 11 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
Nov 14 Javascript
2014最热门的JavaScript代码高亮插件推荐
Nov 25 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
Apr 01 Javascript
vuejs指令详解
Feb 07 Javascript
JavaScript实现省市县三级级联特效
May 16 Javascript
微信小程序仿微信运动步数排行(交互)
Jul 13 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
Jul 27 Javascript
JavaScript中concat复制数组方法浅析
Jan 20 Javascript
jQuery实现倒计时功能完整示例
Jun 01 jQuery
Vue执行方法,方法获取data值,设置data值,方法传值操作
Aug 05 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
PHP MemCached高级缓存配置图文教程
2010/08/05 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
javascript函数库-集合框架
2007/04/27 Javascript
脚本安需导入(装载)的三种模式的对比
2007/06/24 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
jQuery Easyui实现左右布局
2016/01/26 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python常用知识点汇总
2016/05/08 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
python pandas时序处理相关功能详解
2019/07/03 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
外贸采购员岗位职责
2014/03/08 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
党员争先创优承诺书
2015/01/20 职场文书
大学生团日活动总结
2015/05/06 职场文书
简短清晨问候语
2015/11/10 职场文书
浅谈Python魔法方法
2021/06/28 Java/Android