微信小程序点击保存图片到本机功能


Posted in Javascript onDecember 13, 2019

微信小程序点击保存图片到本机功能

1.首先我们要把想保存的图片绘制在画布上

<view class='container'>
 <canvas style='width:{{canvasWidth}}px; height:{{canvasHeight}}px' class="canvas" id="canvas" canvas-id="canvas" disable-scroll="true">
 </canvas>
 <button bindtap='clickMe'>保存图片</button>
</view>

2.我们在看看看js代码在用wx.canvasToTempFilePath方法会返回一个tempFilePath图片路径

// canvas 全局配置
var context = null;
var rpx
var posterHeight = 0
var posterWidth = 0
var avatarPadding = 0 //距离边界
var avatarRadiu = 0 //头像半径
var textScale = 0 //文字比例
 
//注册页面
Page({
 
 data: {
  img: "../../images/img1.jpg",
  myCanvasWidth: 0,
  myCanvasHeight: 0,
  posterHeight: 0,
 },
 
 onLoad: function (options) {
  var that = this
  var myCanvasWidth = that.data.myCanvasWidth  //为了让图片满铺页面
  var myCanvasHeight = that.data.canvasHeight
  context = wx.createCanvasContext('canvas');
 
  wx.getSystemInfo({
   success: function (res) {
    myCanvasWidth = res.screenWidth
    myCanvasHeight = res.screenHeight
    posterWidth = Math.round(res.screenWidth * 0.68) //计算让画布图片自适应
    posterHeight = Math.round(posterWidth * 1920 / 1080)
    avatarPadding = Math.round(posterWidth * 20 / 375)
    avatarRadiu = Math.round(posterWidth * 25 / 375)
    textScale = Math.round(posterWidth / 375)
    rpx = res.windowWidth / 375;
    that.setData({
     myCanvasWidth: myCanvasWidth,
     myCanvasHeight: myCanvasHeight,
     posterHeight: posterHeight
    })
    context.drawImage(that.data.img, 0, 0, that.data.myCanvasWidth, that.data.myCanvasHeight); //画布绘制图片
    context.draw();
 
   },
  })
 },
 clickMe: function () { //保存图片
  wx.canvasToTempFilePath({
   canvasId: 'canvas',
   fileType: 'jpg',
   success: function (res) {
    console.log(res)
    wx.saveImageToPhotosAlbum({
     filePath: res.tempFilePath,
     success(res) {
      console.log(res)
      wx.hideLoading();
      wx.showToast({
       title: '保存成功',
      });
      // //存入服务器
      // wx.uploadFile({
      //  url: 'a.php', //接口地址
      //  filePath: res.tempFilePath,
      //  name: 'file',
      //  formData: {                 //HTTP 请求中其他额外的 form data 
      //   'user': 'test'
      //  },
      //  success: function (res) {
      //   console.log(res);
 
      //  },
      //  fail: function (res) {
      //   console.log(res);
      //  },
      //  complete: function (res) {
      //  }
      // });
     },
     fail() {
      wx.hideLoading()
     }
    })
   }
  })
 },
})

3,css样式 直接给画布设置高度宽度就可以 图片会铺满屏幕

总结

以上所述是小编给大家介绍的微信小程序点击保存图片到本机功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript 匿名函数的理解(透彻版)
Jan 28 Javascript
javascript 从if else 到 switch case 再到抽象
Jul 17 Javascript
jquery 选项卡效果 新手代码
Jul 08 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
ExtJS自定义主题(theme)样式详解
Nov 18 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
Jan 09 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
Dec 02 Javascript
AngularJS Controller作用域
Jan 09 Javascript
Bootstrap table使用方法总结
May 10 Javascript
vue-router路由与页面间导航实例解析
Nov 07 Javascript
Javascript三种字符串连接方式及性能比较
May 28 Javascript
vue自定义正在加载动画的例子
Nov 14 Javascript
微信小程序实现轨迹回放的示例代码
Dec 13 #Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
Dec 13 #Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 #Javascript
使用uni-app开发微信小程序的实现
Dec 13 #Javascript
webpack DllPlugin xxx is not defined解决办法
Dec 13 #Javascript
微信小程序关键字变色实现代码实例
Dec 13 #Javascript
Servlet返回的数据js解析2种方法
Dec 12 #Javascript
You might like
PHP 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
php 安全过滤函数代码
2011/05/07 PHP
php中常用的预定义变量小结
2012/05/09 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
Vue2.x中的Render函数详解
2017/05/30 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
Python切片索引用法示例
2018/05/15 Python
flask框架实现连接sqlite3数据库的方法分析
2018/07/16 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
python科学计算之narray对象用法
2019/11/25 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
浅析Python 条件控制语句
2020/07/15 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
法务专员岗位职责
2014/01/02 职场文书
物流专业求职计划书
2014/01/10 职场文书
初中毕业典礼演讲稿
2014/09/09 职场文书
教师党员承诺书2015
2015/01/21 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
Java面试题冲刺第十八天--Spring框架3
2021/08/07 面试题