微信小程序如何使用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 动态调整图片尺寸实现代码
Dec 28 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
Nov 19 Javascript
angularjs指令中的compile与link函数详解
Dec 06 Javascript
45个JavaScript编程注意事项、技巧大全
Feb 11 Javascript
JS修改iframe页面背景颜色的方法
Apr 01 Javascript
JavaScript实现列表分页功能特效
May 15 Javascript
JavaScript中constructor()方法的使用简介
Jun 05 Javascript
Javascript实现的简单右键菜单类
Sep 23 Javascript
jQuery fadeOut 异步实例代码详解
Aug 18 Javascript
Javascript 闭包详解及实例代码
Nov 30 Javascript
浅谈Vue.set实际上是什么
Oct 17 Javascript
原生js实现二级联动菜单
Nov 27 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 URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
AutoSave/自动存储功能实现
2007/03/24 Javascript
javascript document.images实例
2008/05/27 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
vue实现todolist单页面应用
2017/04/11 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
Linux文件系统类型
2012/09/16 面试题
医学生实习自荐信
2013/10/01 职场文书
生产经理的自我评价分享
2013/11/07 职场文书
总经理职责
2013/12/22 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
初中学生评语大全
2014/04/24 职场文书
安全目标管理责任书
2014/07/25 职场文书
欢迎词范文
2015/01/27 职场文书
青年志愿者活动感想
2015/08/07 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
MySQL开启事务的方式
2021/06/26 MySQL
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python