uni-app使用图片裁剪插件image-cropper

官网地址:https://github.com/wx-plugin/image-cropper

官方完整demo地址:https://github.com/wx-plugin/image-cropper-demo

一、背景:

二、初始准备

1、在项目中新建wxcomponents的文件夹,将官网下载下来的image-cropper插件文件夹粘贴进去

2、pages.json文件中添加image-cropper(哪个页面需要用到就添加到哪个页面下)

"usingComponents": {
       "image-cropper": "../image-cropper/image-cropper"
    },
    "navigationBarTitleText": "裁剪图片",
    "disableScroll": true

3、wxml文件

<image-cropper id="image-cropper" limit_move="{{true}}" disable_rotate="{{true}}" width="{{width}}" height="{{height}}" imgSrc="{{src}}" bindload="cropperload" bindimageload="loadimage" bindtapcut="clickcut"></image-cropper>

三、简单案例

需求:点击pageA的‘上传图片’按钮,打开手机相册选择图片后可对图片进行裁剪编辑

(1) pageA页面代码:

<template>
   <view>
    <view class="content">
      <image :src='src'
             mode='aspectFill'
             v-if="src" />
    </view>
    <view class="btn-sc"
          @click="shangchuang">上传图片
    </view>
</view>
</template>

<script>
export default {
  onLoad(options) {
    this.src = options.src
  },
  data() {
    return {
      src: '',
    }
  },
  methods: {
    // 点击上传图片时触发
    shangchuang() {
      wx.chooseImage({
        count: 1,
        sizeType: ['compressed'],
        sourceType: ['album', 'camera'],
        success: function (res) {
          const src = res.tempFilePaths[0]
          wx.navigateTo({
            url: '../yewu/testupload?src=' + src,
          })
        },
      })
    },
  },
}
</script>

<style>

</style>

(2) 图片裁剪testupload页面代码:

<template>
  <view>
    <image-cropper id="image-cropper"
                   :limit_move="true"
                   :disable_rotate="true"
                   :disable_width='true'
                   :disable_height='true'
                   :width="width"
                   :height="height"
                   :imgSrc="src"
                   @load="cropperload"
                   @imageload="loadimage"
                   @tapcut="clickcut"></image-cropper>

    <view class='bottom'>
      <button @tap='submit'>确定</button>
      <button @tap='quxiao'>取消</button>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      src: '',
      width: 250, //宽度
      height: 250, //高度
    }
  },
  onLoad: function (options) {
    //获取到image-cropper实例
    this.cropper = this.selectComponent('#image-cropper')
    //开始裁剪
    this.src = options.src
    wx.showLoading({
      title: '加载中',
    })
  },
  methods: {
    cropperload(e) {
      console.log('cropper初始化完成')
    },
    loadimage(e) {
      console.log('图片加载完成', e.detail)
      wx.hideLoading()
      //重置图片角度、缩放、位置
      this.cropper.imgReset()
    },
    clickcut(e) {
      console.log(e.detail)
      //点击裁剪框阅览图片
      wx.previewImage({
        current: e.detail.url, // 当前显示图片的http链接
        urls: [e.detail.url], // 需要预览的图片http链接列表
      })
    },
    //点击提交按钮时触发
    submit() {
      this.cropper.getImg((obj) => {
        wx.navigateTo({
           //跳回pageA页面,将裁剪好的图片显示在pageA的image标签上
          url: '../yewu/zhinengmenjin?src=' + obj.url,
        })
        console.log('obj', obj)
      })
    },
    quxiao() {
      wx.navigateBack({
        delta: -1,
      })
    },
  },
}
</script>

<style lang="scss" scoped>
.bottom {
  position: absolute;
  width: 100%;
  bottom: 50rpx;
  display: flex;
  z-index: 10;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  height: 210rpx;
}
button {
  font-size: 27rpx;
  z-index: 2;
  padding: 0 20rpx;
  height: 60rpx;
  min-width: 70rpx;
  margin: 0 4rpx;
}
</style>

四、插件的更多功能可以参照官方完整Demo修改代码

注:官方demo是基于原生小程序编写的,所以在复制代码时需对部分代码进行改造

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值