微信小程序如何使用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的闭包
Jan 17 Javascript
JavaScript入门之对象与JSON详解
Oct 21 Javascript
深入理解javascript学习笔记(一) 编写高质量代码
Aug 09 Javascript
window.open以post方式将内容提交到新窗口
Dec 26 Javascript
Javascript 按位与运算符 (&amp;)使用介绍
Feb 04 Javascript
Javascript封装DOMContentLoaded事件实例
Jun 12 Javascript
Bootstrap安装环境配置教程分享
May 27 Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
Oct 30 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
Jan 22 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
May 22 jQuery
vue-cli 打包使用history模式的后端配置实例
Sep 20 Javascript
基于AngularJs select绑定数字类型的问题
Oct 08 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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
php printf输出格式使用说明
2010/12/05 PHP
PHP基础陷阱题(变量赋值)
2012/09/12 PHP
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
javascript 禁止复制网页
2009/06/11 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
angular多语言配置详解
2019/05/16 Javascript
js/jQuery实现全选效果
2019/06/17 jQuery
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
python实现删除文件与目录的方法
2014/11/10 Python
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
python爬取微信公众号文章
2018/08/31 Python
python getpass实现密文实例详解
2019/09/24 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
2020/04/26 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
妇产科护士自我鉴定
2013/10/15 职场文书
部队万能检讨书
2014/02/20 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
2014年财务经理工作总结
2014/12/08 职场文书
政协委员个人总结
2015/03/03 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
中学政教处工作总结
2015/08/13 职场文书