微信小程序-canvas压缩图片使用入门

微信小程序canvas组件官方文档

微信小程序canvas组件官方文档
canvas API

canvas组件介绍


官方文档中对canvas属性均有介绍,这里对于入门简要说明一下:
  • canvas 为画布组件名
  • style 定义画布样式 参考CSS教程 这里定义一个宽200px,高200px的画布组件
  • canvas-id 设置该画布的id(可看做该画布的名字)
  • disable-scroll 类型为Boolean 官方解释:当在 canvas 中移动时且有绑定手势事件时,禁止屏幕滚动以及下拉刷新
  • 以下类型顾名思义分别为开始触碰、滑动、结束触碰动作以及触碰时被打断动作、长按动作和出现错误时属性

压缩图片




//js中data
data:{
  imageW:[],//用于存放选中图片的宽
  imageH:[],//用于存放选中图片的高
}
//js文件内容
chooseImage:function(){
    var that = this
    //选择图片
    wx.chooseImage({
      count:1,//只可选一张图,最高可为9
      success: function(res) {
          wx.getImageInfo({
            src: res.tempFilePaths,
            success(res){
              that.data.imageW.push(res.width)//将图片宽放入data中
              that.data.imageH.push(res.height)//将图片高放入data中
            }
          })
        const ctx = wx.createCanvasContext("myCanvas")//创建画布上下文
        ctx.drawImage(res.tempFilePaths[0], 0, 0, that.data.imageW[0], that.data.imageH[0],0,0,200,200)//描述图片到画布上
        ctx.draw()//绘制画布
      }
    })
  }

上述代码简介
1.首先在wxml文件中添加一个canvas-id="myCanvas"的画布组件和一个button,点击该button触发js中chooseImage函数
2.wx.chooseImage()为微信原生API,用于选择手机中的photos或者使用相机拍照
3.在wx.chooseImage()中success(图片选择成功后的回调函数),创建CanvasContext实例ctx
4.使用ctx.drawImage()将第一张图片描述到id为myCanvas的canvas组件,请注意描述的内容并不能显示到canvas上
5.这里res.tempFilePaths[0].width和res.tempFilePaths[0].height为所选图片的宽高,而200,200为绘制到canvas上的宽高
6.使用ctx.draw()将上述中的所有描述内容绘制到画布上

//js续
showImage:function(){
    var that = this
    wx.canvasToTempFilePath({
      x:0,
      y:0,
      width: 200,
      height: 200,
      destWidth:100,
      destHeight:100,
      canvasId: "myCanvas",
      quality: 1,
      success(res) {
        that.setData({
          imgFilePath: res.tempFilePath
        })
      }
    })
  }


上述代码简介
1.使用wx.canvasToTempFilePath()将画布中的内容导出为图片,并将该图片的临时地址写入data中
2.wx.canvasToTempFilePath()中x、y为所截取图片左上角在canvas上的位置,width、height为图片右下角在canvas上的位置,destWidth、destHeight为输出图片的宽高,上述所有变量赋值单位均为px
3.可以在wxml中添加一个view组件显示该图

将压缩后的图片存入手机

//js续
saveImage:function(){
    var that = this
    wx.saveImageToPhotosAlbum({
      filePath: that.data.imgFilePath,
      success:function(){
        console.log("保存成功")
      }
    })
  }

上述代码简介
1.添加一个函数用于存放图片到系统相册
2.使用wx.saveImageToPhotosAlbum()保存图片,其中filePath为该图片临时路径

总结

1.在canvas中创建一个canvas组件,不在页面上显示该组件思路:将该组件放在wxml最下方,在将该组件向右移出屏幕范围
示例

.myFanvas{
  position: fixed;
  left: 1110rpx
}

2.使用wx.chooseImage()选择系统照片或调用相机拍照
3.使用 wx.createCanvasContext()、ctx.drawImage()、draw()将图片写入canvas中
4.使用wx.canvasToTempFilePath()将canvas中内容导出为图片,默认格式png,也可使用fileType:"jpg"将格式改为jpg,现只支持两种;已压缩完成
5.使用wx.saveImageToPhotosAlbum()将导出的图片存入系统相册

你可能感兴趣的:(微信小程序-canvas压缩图片使用入门)