微信小程序如何使用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 相关文章推荐
使用隐藏的new来创建对象
Mar 29 Javascript
jQuery div层的放大与缩小简单实现代码
Mar 28 Javascript
JS将表单导出成EXCEL的实例代码
Nov 11 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
Nov 24 Javascript
js实现新年倒计时效果
Dec 10 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
Sep 29 Javascript
JS验证图片格式和大小并预览的简单实例
Oct 11 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
Aug 18 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
原生JavaScript实现换肤
Feb 19 Javascript
js面向对象编程OOP及函数式编程FP区别
Jul 07 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
PHP 防恶意刷新实现代码
2010/05/16 PHP
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
php注册登录系统简化版
2020/12/28 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
javascript实现的距离现在多长时间后的一个格式化的日期
2009/10/29 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
python的else子句使用指南
2016/02/27 Python
Python脚本处理空格的方法
2016/08/08 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Python控制Firefox方法总结
2019/06/03 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
Python接口开发实现步骤详解
2020/04/26 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
高校优秀辅导员事迹材料
2014/05/07 职场文书
员工福利申请报告
2015/05/15 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书