zoukankan      html  css  js  c++  java
  • 小程序裁剪

    使用上一篇文件的cropper插件引入后

    wxml

    <import src="../we/we-cropper.wxml"/>
    <view class="cropper-wrapper">
    <template is="we-cropper" data="{{...cropperOpt}}"/>
    
    </view>
    <view class="cropper-buttons">
    <button class="upload"
    bindtap="uploadTap">
    重新上传
    </button>
    <button
    class="getCropperImage"
    bindtap="mygetCropperImage">
    确定
    </button>
    </view>

    wxss

    /* pages/cut/index.wxss */
    
    .cropper-wrapper{
      position: relative;
      display: flex;
      flex-direction: row;
      justify-content: space-between;
      align-items: center;
      justify-content: center;
      height: 100%;
      background-color: #e5e5e5;
    }
    
    .cropper-buttons{
      display: flex;
      flex-direction: row;
      justify-content: space-between;
      align-items: center;
      position: absolute;
      bottom: 0;
      left: 0;
       100%;
      height: 150px;
      padding: 0 20rpx;
      box-sizing: border-box;
      line-height: 150px;
    }
    
    .cropper-buttons .upload, .cropper-buttons .getCropperImage{
      text-align: center;
      z-index: 999999;
      margin: 10rpx;
      background-color: #36ccf9;
    }

    js

    const Util = require('../../../../utils/util.js');
    const app = getApp()
    const {
      regeneratorRuntime
    } = global
    
    import WeCropper from '../we/we-cropper.js';
    const device = wx.getSystemInfoSync() // 获取设备信息
    const width = device.windowWidth // 示例为一个与屏幕等宽的正方形裁剪框
    const height = device.windowHeight -150
    
    
    Page({
        data: {
            cropperOpt: {
                id: 'cropper', // 用于手势操作的canvas组件标识符
                targetId: 'targetCropper', // 用于用于生成截图的canvas组件标识符
                pixelRatio: device.pixelRatio, // 传入设备像素比
                width, // 画布宽度
                height, // 画布高度
                src: '',
                scale: 2.5, // 最大缩放倍数
                zoom: 8, // 缩放系数
                cut: {
                    x: (width - 320) / 2, // 裁剪框x轴起点
                    y: (width - 320) / 2, // 裁剪框y轴起点
                     320, // 裁剪框宽度
                    height: 320 // tore/"裁剪框高度
                }
            }
        },
        // 页面onLoad函数中实例化WeCropper
        onLoad: function(options) {
    
            const {
              cropperOpt
            } = this.data;
            cropperOpt.src = options.src;
            if (cropperOpt.src) {
              this.cropper = new WeCropper(cropperOpt)
                .on('ready', (ctx) => {
                  console.log(`wecropper is ready for work!`)
                })
                .on('beforeImageLoad', (ctx) => {
                   wx.showToast({
                     title: '上传中',
                     icon: 'loading',
                    duration: 3000
                   })
                 })
                .on('imageLoad', (ctx) => {
                   wx.hideToast()
                 })
            }
        },
        // 插件通过touchStart、touchMove、touchEnd方法来接收事件对象。
        touchStart(e) {
            this.cropper.touchStart(e)
        },
        touchMove(e) {
            this.cropper.touchMove(e)
        },
        touchEnd(e) {
            this.cropper.touchEnd(e)
        },
        // 自定义裁剪页面的布局中,可以重新选择图片
        uploadTap() {
            const self = this
            wx.chooseImage({
                count: 1, // 默认9
                sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
                sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
                success(res) {
                    const src = res.tempFilePaths[0]
                    self.cropper.pushOrign(src)
                  
                }
            })
        },
    
        // 生成图片
        mygetCropperImage(){
          var that = this;
            this.cropper.getCropperImage((tempFilePath) => {
                // tempFilePath 为裁剪后的图片临时路径
                if (tempFilePath) {
                    //TODO 处理逻辑
                }else{
                    console.log('获取图片地址失败,请稍后重试')
                }
            })
          }
    })

    json

    {
      "navigationBarTitleText": "裁剪",
      "usingComponents": {}
    }
  • 相关阅读:
    poj-1069(三角形和六边形)(转)
    poj-1024(唯一最短路径)(转)
    poj-1022(四维模仿)(转)
    poj-1020(填蛋糕)(转)
    poj-1011
    poj-1010(转)
    poj-2312
    nyoj--幸运三角形
    nyoj--Divideing Jewels
    关于 APP在接入flutter之后在多任务下看不到AppName,只有APP图标,正常应该是APP图标+APP名称
  • 原文地址:https://www.cnblogs.com/shuihanxiao/p/15091417.html
Copyright © 2011-2022 走看看