微信小程序> 简化的微信小程序剪切头像wecropper框架案例

简化的微信小程序剪切头像wecropper框架案例

浏览量:566 时间: 来源:盛国强

废话不多说,先上图~

目录结构是不是超简单?下面我们来分析一波怎么做。

 

1.首先将we-cropper框架包添加到自己的小程序项目中,这里我的we-cropper是经过删减的,因为只用到了两个文件;

2.新建cropper和upload这两个page;

cropper页面:

upload页面:

3.点击cropper页面中的圆形头像,可选择图片,跳转到upload页面进行剪切。

4.点击确定之后就看到第一张图所示的效果了。

 

相关代码贴一贴吧:

cropper.wxml

<view class="container flex">    <view>        <image src="{{src}}" class="avatar" bindtap="upload"></image>        <view class="item flex" bindtap="upload">点我头像</view>    </view></view>

cropper.js

Page({  data: {    src: ''  },  upload() {    wx.chooseImage({      count: 1, // 默认9      sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有      success(res) {        const src = res.tempFilePaths[0]        wx.redirectTo({          url: '../upload/upload?src=' + src        })      }    })  },  onLoad(option) {    let {      avatar    } = option    if (avatar) {      this.setData({        src: avatar      })    }  }})

upload.wxml

<view class="cropper-wrapper">  <template is="weCropper" data="{{...cropperOpt}}" />  <view class="cropper-buttons">    <view class="upload" bindtap="uploadTap">      重新选择    </view>    <view class="getCropperImage" bindtap="getCropperImage">      确定    </view>  </view></view>

upload.js

import weCropper from '../../we-cropper/dist/weCropper.js'const device = wx.getSystemInfoSync()const width = device.windowWidthconst height = device.windowHeight - 50Page({  data: {    cropperOpt: {      id: 'cropper',      width,      height,      scale: 2.5,      zoom: 8,      cut: {        x: (width - 300) / 2,        y: (height - 300) / 2,        width: 300,        height: 300      }    }  },  touchStart(e) {    this.wecropper.touchStart(e)  },  touchMove(e) {    this.wecropper.touchMove(e)  },  touchEnd(e) {    this.wecropper.touchEnd(e)  },  getCropperImage() {    this.wecropper.getCropperImage((avatar) => {      if (avatar) {        // 获取到裁剪后的图片        wx.redirectTo({          url: '../cropper/cropper?avatar=' + avatar        })      } else {        console.log('获取图片失败,请稍后重试')      }    })  },  uploadTap() {    const self = this    wx.chooseImage({      count: 1, // 默认9      sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有      success(res) {        let src = res.tempFilePaths[0]        // 获取裁剪图片资源后,给data添加src属性及其值        self.wecropper.pushOrign(src)      }    })  },  onLoad(option) {    // do something    const {      cropperOpt    } = this.data    const {      src    } = option    if (src) {      Object.assign(cropperOpt, {        src      })      new weCropper(cropperOpt)        .on('ready', function(ctx) {})        .on('beforeImageLoad', (ctx) => {          wx.showToast({            title: '上传中',            icon: 'loading',            duration: 3000          })        })        .on('imageLoad', (ctx) => {          wx.hideToast()        })    }  }})

完整demo可直接下载~

项目地址:https://download.csdn.net/download/java558/10544752

有问题在评论区留言 或 加QQ群`104420392` 找我

 

补充:we-cropper框架存在适配问题,目前已解决,请查看我的另一篇文章:https://blog.csdn.net/java558/article/details/81111666

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎