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


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 相关文章推荐
关于document.cookie的使用javascript
Apr 11 Javascript
JS array 数组详解
Mar 22 Javascript
js的alert弹出框出现乱码解决方案
Sep 02 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
纯JS实现本地图片预览的方法
Jul 31 Javascript
学习javascript面向对象 理解javascript原型和原型链
Jan 04 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
Jun 14 Javascript
基于jQuery实现火焰灯效果导航菜单
Jan 04 Javascript
mac上node.js环境的安装测试
Jul 03 Javascript
vue router使用query和params传参的使用和区别
Nov 13 Javascript
浅谈VUE监听窗口变化事件的问题
Feb 24 Javascript
JS打印彩色菱形的实例代码
Aug 15 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显示MySQL数据的三种方法
2008/06/05 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
2015/12/03 Javascript
JS加载iFrame出现空白问题的解决办法
2016/05/13 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
python 多线程应用介绍
2012/12/19 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
安装Python的教程-Windows
2017/07/22 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
保险专业自荐信范文
2014/02/20 职场文书
房地产广告词大全
2014/03/19 职场文书
运动会广播稿200字
2014/10/18 职场文书
地方白酒代理协议书
2014/10/25 职场文书
华山导游词
2015/02/03 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
opencv检测动态物体的实现
2021/07/21 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python