微信小程序如何使用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 相关文章推荐
JS小框架 fly javascript framework
Nov 26 Javascript
javascript获得服务器端控件的ID的实现代码
Dec 28 Javascript
jQuery中position()方法用法实例
Jan 16 Javascript
jQuery插件EnPlaceholder实现输入框提示文字
Jun 05 Javascript
jQuery通过写入cookie实现更换网页背景的方法
Apr 15 Javascript
浅谈js中test()函数在正则中的使用
Aug 19 Javascript
JavaScript 事件对内存和性能的影响
Jan 22 Javascript
JavaScript两个变量交换值的实现方法
Mar 01 Javascript
Swiper实现轮播图效果
Jul 03 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
Feb 10 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 Javascript
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
如何给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
CodeIgniter安全相关设置汇总
2014/07/03 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
node.js实现快速截图
2016/08/27 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
分析JS单线程异步io回调的特性
2017/12/01 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
python实现mysql的读写分离及负载均衡
2018/02/04 Python
对python中的高效迭代器函数详解
2018/10/18 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
电子商务专业自我鉴定
2013/12/18 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
python自动计算图像数据集的RGB均值
2021/06/18 Python
python装饰器代码解析
2022/03/23 Python